Vue 从 v-for 循环输入文本中获取唯一值

Posted

技术标签:

【中文标题】Vue 从 v-for 循环输入文本中获取唯一值【英文标题】:Vue get unique values from v-for looped iput text 【发布时间】:2021-05-28 15:44:53 【问题描述】:

我有一个遍历属性的表单,对于每个属性,它们都有许多房屋类型,例如studio apartmentone bedrooomtwo bedroom e.t.c

我希望用户为每个房产填写房产中每种房屋类型收取的租金。我这样做如下:

<div v-for="(property, index) in properties" :key="index">
            property.property_name 
          <div v-for="(house_type, index) in property.house_type.data" :key="index">
               house_type.type <br>
              <input type="text" v-model="form[index].rent">Rent<br>
          </div>
          <br>
 </div>

<script>
import  mapGetters, mapActions  from 'vuex'

data() 
    return 
            form:[],
    
,

computed: 
     ...mapGetters(
        authenticated: 'auth/authenticated',
        token: 'auth/token',
        properties: 'property/properties',
    ),
  ,

  watch: 
    properties(properties) 
        this.form = properties.map(_ => ( rent: [] ))
    
   
</script>

问题在于,如果我填写属性 1 中的一室公寓的租金,则所有属性中的所有一室公寓都填充了该值。我该如何解决这个问题。谢谢

【问题讨论】:

【参考方案1】:

您在内循环和外循环中都使用了两次index。尝试使用例如propIndextypeIndex 代替。

<div v-for="(property, propIndex) in properties" :key="propIndex">
   property.property_name 
  <div v-for="(house_type, typeIndex) in property.house_type.data" :key="typeIndex">
     house_type.type <br>
    <input type="text" v-model="form[propIndex].rent">Rent<br>
  </div>
  <br>
</div>

【讨论】:

以上是关于Vue 从 v-for 循环输入文本中获取唯一值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vue js 的 v-for 循环中使用 v-model

Vue。如何在循环 v-for 中获取 prev 和 current 值以进行比较?

无法从 v-for 获取数据且数据为空

vue中v-for循环的时候为啥要添加:key属性

Vue 3 & Composition API:v-for 循环中的模板引用错误:仅获取代理

从循环Vue.js中的每个选择中获取数据