1.el-tree中default-checked-keys属性出现减少数据不生效的问题
问题描述
比如我开始selectedMenus里的数据是【1,2,3,4,5,6】,在我想要进行修改里面数据的时候:
selectedMenus=【1,2,3,5】
解决方法
不要用简单的赋值方法,即# efault-checked-keys赋值的方式
改成使用this.$refs.tree.setCheckedKeys(resp)的方式
具体代码如下:
this.$nextTick(() => {
this.$refs.tree2.setCheckedKeys(defaultSelected)
// defaultSelected = ['1','2','3']
// 此时就会勾选上id为1,2,3的选项
})
2.element+dialog弹框+表单无法重置问题
问题描述
1: 标签需要绑定 “ref” 和 :model
2: 标签需要绑定 prop
此时使用:this.$refs[e].resetFields();还是无法重置,为什么呢?
问题分析
this.$refs[‘form’].resetFields()本质是将表单数据恢复至初始状态;打开表单之前el-dialog中的内容尚未渲染,
解决
打开弹窗的时候使用this.$nextTick()初始化数据,与此同时要用深拷贝,不然重置表单时候会将表格数据一起重置
// 修改
handleUpdate (row) {
this.open = true
this.$nextTick(() => {
this.menuForm = JSON.parse(JSON.stringify(row))
})
}
this.$nextTick作用:在下次dom更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获得更新后的dom
3.el-form表单对象内还嵌套对象,绑定的prop规则校验会失效
因为受限于后端返回的数据格式,整个表单是个对象,但是里面还会嵌套对象。
而我们在绑定字段时,自然而然是去绑定最里层的字段。
el-form的model是去绑定大的表单对象。
而我这里的表单项则是绑定final_transfer.acc_profit_name。但我这里prop写的是acc_profit_name。对应规则里面的prop。
解决办法:
prop和rules的值修改如下。