求解 element ui 框架这种数据格式下该如何对 input 进行验证

2022-05-13 15:34:06 +08:00
 juventusryp

问题:

代码:

<template>
  <el-form :model="examInfo" label-width="100px" class="demo-dynamic">
    <div
      v-for="(item, index) in examInfo"
      :key="index"
    >
      <el-form-item
        v-for="(t, x) in item"
        :key="t + x"
        :label="'name' + x"
        :prop=""
        :rules="[
          {
            required: true, message: '不能为空', trigger: 'blur'
          },
          { type: 'number', message: '必须为数字'}
        ]"
      >
        <el-input v-model.number="t.questionTitle" />
      </el-form-item>
    </div>

  </el-form>
</template>

<script>
export default {
  data() {
    return {
      examInfo: {
        'simple': [
          {
            'questionTitle': ''
          },
          {
            'questionTitle': ''
          }
        ],
        'discuss': [
          {
            'questionTitle': ''
          },
          {
            'questionTitle': ''
          }
        ]
      }
    }
  },
  methods: {

  }
}
</script>

1088 次点击
所在节点    问与答
10 条回复
canbingzt
2022-05-13 16:49:10 +08:00
prop="`examInfo[${index}].questionTitle`"
canbingzt
2022-05-13 16:50:30 +08:00
不行的话试试
prop="`examInfo[${index}]`"
zj9495
2022-05-13 16:53:37 +08:00
juventusryp
2022-05-13 17:24:21 +08:00
@canbingzt 两种都已经试过了,不行
juventusryp
2022-05-13 17:25:10 +08:00
@zj9495 看了这个了,官方给的数据结构是对象里面只有一个数组对象,我这里是两个甚至更多的数组对象,所以不知道怎么写了
juventusryp
2022-05-13 17:28:23 +08:00
网上能查的方法都查了,如果这么写:
:prop="`simple.${x}.questionTitle`"
那么是可以验证对应的 item 的,但是我这里的数据是后端传过来,不确定数量的数组对象,所以特来求教各位 v 友
zj9495
2022-05-13 17:43:59 +08:00
:prop="`${index}.${x}.questionTitle`"
试试这个
juventusryp
2022-05-13 22:59:14 +08:00
@zj9495 太感谢了,这样可以,折腾了几天
但是不明白原理是什么呢,官方给的解释是 prop 要传入 form 组件的 model 字段,这里为什么第一个是 index ?
xingyue
2022-05-14 10:17:28 +08:00
@juventusryp (item, index) in examInfo 这一步你遍历的是对象,参数是(value,key,index) in object
zj9495
2022-05-16 11:16:45 +08:00
@xingyue #9 正解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/852646

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX