近一次项目中需要监听传入的Id变化,所以使用了computed和watch结合的方式来进行监听
computed: {
listenId: function() {
return this.form.interviewId
}
},
watch: {
listenId(val, oldVal) {
}
},
因为涉及到表单渲染的问题,UI用的是elementUI,表单里有table表单,需要渲染多选框的问题,但是按照elementUI的table-API来进行渲染复选框,总是报错拿不到我的table实例(此时我是在watch中获取的实例),后来查阅发现,原来是因为节点都还没有渲染完毕就去获取了,这时候是拿不到的。
更改之后的方法:
listenId(val, oldVal) {
if (val) {
this.$nextTick(() => {
// 渲染table业务
this.$refs.industryRef.toggleRowSelection(row)
})
}
}
还有一个就是当关闭子组件(也就是我渲染完毕的这个组件),需要清除table上的所有选中框,如果不清除,当再一次进入之后table上的多选框是不显示的,后来我也打印了destroyed的钩子函数,也没有执行。
因为我的子组件是Dialog,所以我在他的close事件中添加了清除所有复选框的API,这时候在此进入就没有问题了。