对 v-for 生成的动态项目进行 Element-UI 验证

Posted

技术标签:

【中文标题】对 v-for 生成的动态项目进行 Element-UI 验证【英文标题】:Element-UI validation on dynamic items generated by v-for 【发布时间】:2018-09-23 11:12:46 【问题描述】:

我想使用 element-ui 和 asyc-validator 验证表中的字段,但不知道该怎么做!没有找到任何合适的文档和讨论帖,所以在这里发布我的问题。

vue 模板:

<el-form :model='myForm' :rules='rules' ref='myForm'>
  <div v-for="(item, index) in items" :key="index">
    <div class="col">
      <el-form-item label="Description" prop="description">
        <el-input v-model="item.description"></el-input>    
      </el-form-item>
    <div>
    <div class="col">
      <el-form-item label="Price" prop="price">
        <el-input v-model="item.price"></el-input>    
      </el-form-item>
    <div>
  </div>
</el-form>

我试过这样设置规则,但它不起作用

rules: 
  "description":  required: true, message: 'is required', trigger: 'blur' ,
  "price":  required: true, message: 'is required', trigger: 'blur' 

这里是 jsfiddle:https://jsfiddle.net/cgL6y9kq/15/ 尝试提交表单,即使您填写了必填字段,也会出现错误。

【问题讨论】:

【参考方案1】:

您需要使用索引动态设置 :props 并在 el-form-item 中添加规则。在此处查看 jsfiddle:https://jsfiddle.net/cgL6y9kq/34/

<el-form-item label="Description" 
  :prop="'items.' + index + '.description'"
  :rules="required: true, message: 'description is required', trigger: 'blur'">
    <el-input v-model="item.description"></el-input>
</el-form-item>

【讨论】:

我已经提交了 v-for 循环中的每个项目。那么如何验证一个特定的表单呢? 这对我不起作用,这不适用于更高版本吗? 使用最新的元素 ui (2.15.1) 为我工作 但你不能忘记使用内联:rules

以上是关于对 v-for 生成的动态项目进行 Element-UI 验证的主要内容,如果未能解决你的问题,请参考以下文章

vue使用v-for循环,动态修改element-ui的el-switch

element UI实现动态生成多级表头

element-UI,根据后台数据动态生成el-checkbox-group,点击提交获取绑定checked项以及实现显示默认checked项

Vue.js - element-ui el-table v-for 丢失最后一项

elementUI的table动态生成列

vue.js - v-for 中动态生成的组件没有正确更新绑定属性