zoukankan      html  css  js  c++  java
  • 关于element-ui resetFields

    上周换到新项目组,依然是vue,不过是搭配element-ui。

    这两天开始用el-form,发现了个问题。

    就是我的表单确定提交之后,需要重置表单,一开始我没看熟API,直接将form对象手动赋成初始值,但是这样的问题是再打开每个el-form-item还是校验成功,

    这时我发现了resetFields方法(对整个表单进行重置,将所有字段值重置为初始值并移除校验结果),于是改用这个方法。

    改了之后出现了另一个问题,其他字段都重置了,但是有一个form-item里面放的是checkbox,我给的初始值是false,但是重置后变成了true。我以为我给的值类型不对,后来发现怎么也不行。

    去看了下elementui form/form-item的源码,发现,必须在每个form-item里加上prop属性,并且与-model的值相同才可以。

    因为我的checkbox不是必选的,也没什么其他验证,所以一开始没有给prop属性:

    <el-form-item label="领取限制" prop="limitType">
         <el-checkbox v-model="form.limitType">关注公众号才能领取</el-checkbox>
    </el-form-item>

    后来改成了:

    <el-form-item label="领取限制" prop="limitType">
        <el-checkbox v-model="form.limitType">关注公众号才能领取 
        </el-checkbox>
    </el-form-item>


    rules: {
      limitTYpe: []
    }

    这样才重置成功~

    来看一下form-item中关于resetField的代码:

        // 重置字段为初始值
        resetField() {
          this.validateState = '';
          this.validateMessage = '';
    
          // 获取model数据模型中所对应的值
          let model = this.form.model; // 所有表单数据
          let value = this.fieldValue; // 该项表单数据
          let path = this.prop;
          if (path.indexOf(':') !== -1) {
            path = path.replace(/:/, '.');
          }
    
          let prop = getPropByPath(model, path, true);
    
          this.validateDisabled = true;
          // 重置为一开始获取的初始值
          if (Array.isArray(value)) {
            prop.o[prop.k] = [].concat(this.initialValue);
          } else {
            prop.o[prop.k] = this.initialValue;
          }
    
          // 向下寻找select组件,发布fieldReset事件暴露初始表单数据
          this.broadcast('ElTimeSelect', 'fieldReset', this.initialValue);
        },

     可以看到初始值是通过prop计算得到当前path,由path得到getPropByPath的返回值prop,并将prop.o[prop.k]设置为初始值,完成重置。

  • 相关阅读:
    leetcode-383-Ransom Note(以空间换时间)
    AtCoder
    AtCoder
    Hadoop序列化案例实操
    Java实现MapReduce Wordcount案例
    HDFS常用API操作 和 HDFS的I/O流操作
    HBase常用的JAVA API操作
    ZooKeeper之服务器动态上下线案例
    机器学习(6)——逻辑回归
    机器学习(5)——多项式回归与模型泛化
  • 原文地址:https://www.cnblogs.com/yan89/p/10753074.html
Copyright © 2011-2022 走看看