错误集-vue表单验证-计算属性

wujiawen 发布于

表单验证

能够校验的前提

  • 被校验字段必须在formData中

    自定义校验方法

  • 当使用自定义检验规则时,自定义校验规则 validator 的 callback() 必须被调用

  • 如果使用了 if else 则每层都要调用 callback()
    否则表单的校验方法 this.$refs[formName].validate((boolean, obj) => {}) 不会执行
    ( boolean 表示校验是否通过,object 为未通过字段 )

    对table的每一行单独做校验

  • tableData必须在formData中,绑定prop
    格式应为::prop=”tableData.scope.$index.key” 绑定rules, :rules=”rules.key”

  • 自定义校验方法中, 根据勾选的行进行判断,勾选了才进行校验,否则直接 callback()

  • 判断该行是否勾选:table 的 @selection-change 中会以数组形式保存勾选的内容
    根据此数组内容与tableData进行比对,找到每一个勾选内容的行标,
    再与 validator (rule, value, callback) 中 的 rule (值为prop中绑定的 tableData.scope.$index.key) 的index 进行比对
    判断该行是否有被勾选

  • 需要注意的一点
    这种方法 校验提示会被table挡住
    需要将 错误提示的类 el-form-item .el-form-item__content .el-form-item__error 设置为 position: relative

计算属性

  • 计算属性依赖于响应式属性,只有当被依赖的属性发生变化,计算属性的值才会真正改变
    因为计算属性存在缓存 被依赖的属性不变时,不会触发getter

  • 要修改计算属性的值,必须通过setter
    否则 获取时会报错 set中将计算属性的新值赋给被依赖的属性 set(val)