vue.$nextTick 解决了哪些问题

  $nextTick 是在下次 DOM 更新循环结束以后执行延迟回调,在修改数据以后使用 $nextTick,则能够在回调中获取更新后的 DOMui

1.问题 this

  (1).elementui dialog 中的元素经过 this.$refs  获取不到3d

       (2).在第一次进入路由 created() 中操做DOM元素undefined (业务需求 通常不这么作)blog

       (3).后台请求 完成 页面上的数据变化可视化(通常用loading 遮罩 可是返回数据较多 并不能在后台返回成功以后立刻 让loading设为false)ip

2,解决方案  element

   有这样一个需求 在 dialog 打开 以后 就要让 后台返回的数据 (已勾选)的数据 打勾路由

  

因为 element table 中 没有默认勾选的树形 只能用 toggleRowSelection 方法io

<template>
	<div>
		<el-dialog :visible.sync="dialogVisible" size="tiny">
			<el-table ref="multipleTable" :data="tableData3" border tooltip-effect="dark" style="width: 100%">
				<el-table-column type="selection" width="55">
				</el-table-column>
				<el-table-column label="日期" width="120">
					<template scope="scope">{{ scope.row.date }}</template>
				</el-table-column>
				<el-table-column prop="name" label="姓名" width="120">
				</el-table-column>
				<el-table-column prop="address" label="地址" show-overflow-tooltip>
				</el-table-column>
			</el-table>

		</el-dialog>

		<div style="margin-top: 20px">
			<el-button @click="openDialog">打开弹框</el-button>
		</div>

	</div>

</template>

<script>
	export default {
		data() {
			return {

				dialogVisible: false,
				tableData3: [{
					date: '2016-05-03',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1518 弄'
				}, {
					date: '2016-05-02',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1518 弄'
				}, {
					date: '2016-05-04',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1518 弄'
				}, {
					date: '2016-05-01',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1518 弄'
				}, {
					date: '2016-05-08',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1518 弄'
				}, {
					date: '2016-05-06',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1518 弄'
				}, {
					date: '2016-05-07',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1518 弄'
				}],
				multipleSelection: []
			}
		},

		methods: {
			openDialog() {
				this.dialogVisible = true;
			    this.toggleSelection([this.tableData3[2],this.tableData3[3]])

			},
			toggleSelection(rows) {
				this.$refs.multipleTable.clearSelection();
				if(rows) {
					rows.forEach(row => {
						this.$refs.multipleTable.toggleRowSelection(row);
					});
				}
			},
		}
	}
</script>

  咱们在第一次打开弹框的时候,是没有 勾选上的 ,控制台table

  $nextTick 是在下次 DOM 更新循环结束以后执行延迟回调,在修改数据以后使用 $nextTick,则能够在回调中获取更新后的 DOM  class

      弹出框打开以后 页面须要加载DOM 而后 在nextTick中调用勾选的方法  页面渲染完成以后 调用 

其余问题 相似 就不过多累述;

相关文章
相关标签/搜索