vue 中嵌套循环 input 如何绑定 v-model 的问题

2022-02-28 00:34:35 +08:00
 juventusryp

大致业务场景

目前遇到的问题

相关示例代码

<el-form
  ref="dataForm"
  :model="Data"
  label-position="left"
  label-width="90px"
>
  <el-form-item
     v-for="(item, index) in dan"
     :key="index"
     :label="item['标签']"
   >
     <p
        v-for="(t, x) in item['单数']"
        :key="'ds' + x"
      >
        单{{ t }}
        <el-input
           v-for="(i, k) in item['小单数']"
           :key="k"
           v-model=""
           "
        />
      </p>
   </el-form-item>
</el-form>

export default {

name: 'App',
   data() {
    return {
       dan {
          1: {
             '标签': ‘大单 1’,
             '单数': 2,
             '小单数': 3
             },
          2: {
             '标签': ‘大单 2’,
             '单数': 3,
             '小单数': 5
             }
            }
        }
    }
}

1194 次点击
所在节点    问与答
9 条回复
chengxy
2022-02-28 02:28:03 +08:00
可以参考各种 form render 的实现方式
MacDows
2022-02-28 02:37:44 +08:00
遇到了类似的问题
https://v2ex.com/t/832529#reply9
我最后是把这些嵌套变成一个列表,加一个 Level 值标记层数
然后就好多了,vue 新手也能写了
要不然循环嵌套会很复杂
这肯定不是最优方案,抛砖引玉,欢迎大佬指点
murmur
2022-02-28 07:47:52 +08:00
vmodel 是可以写变量的,提前生成一个数组或者 object
murmur
2022-02-28 07:48:37 +08:00
拿不到数据大概率是你绑定的变量没有提前生成好,不行就$set 一波,反正响应式得建立起来
nitmali
2022-02-28 08:09:06 +08:00
多半是没有响应,要么$set ,要么 :value @change
cxe2v
2022-02-28 09:59:32 +08:00
<el-input
v-for="(i, k) in item['小单数']"
:key="k"
v-model=""
"
/>


你这里为什么是 in item['小单数']",应该是 in t['小单数']吧
konakona
2022-02-28 10:29:00 +08:00
v-for 可以拼接。

参考:
<el-input v-model="form.package_goods[scope.$index].quantity" clearable placeholder=""></el-input>
konakona
2022-02-28 10:29:12 +08:00
打顺手了,是 v-model 可以拼接。
konakona
2022-02-28 10:31:38 +08:00
像你使用 v-for 循环来拼接 v-model 可以直接用 v-for 绑定的值,你的是第一层 el-form-item 的 v-for 里的 item ,第一层的 el-input v-model 可以是:v-model="item.字段名称" 。第二层的 v-for 的是 t ,v-model 可以是:v-model="t.字段名称",第三层如此类推。

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

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

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

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

© 2021 V2EX