记录一下工作vue element组件上遇到的问题

378 阅读1分钟

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

image.png 2: 标签需要绑定 prop

image.png 此时使用: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规则校验会失效

因为受限于后端返回的数据格式,整个表单是个对象,但是里面还会嵌套对象。
而我们在绑定字段时,自然而然是去绑定最里层的字段。

image.png el-form的model是去绑定大的表单对象。
而我这里的表单项则是绑定final_transfer.acc_profit_name。但我这里prop写的是acc_profit_name。对应规则里面的prop。

解决办法:

prop和rules的值修改如下。

image.png

image.png