从计算函数的 getter 中引用 v-for 元素

Posted

技术标签:

【中文标题】从计算函数的 getter 中引用 v-for 元素【英文标题】:referring to a v-for element from inside a getter of computed function 【发布时间】:2019-03-26 04:19:53 【问题描述】:

在 Vue 中,我有一个 v-for 循环,它根据我拥有的对象呈现输入。 输入是一个 v-model 到一个计算函数:

<template v-for="product in products>"
   product.Name : <input type="text" v-model="productAmount">
</template>

因此,带有 get 和 setter 的计算函数:

computed: 
  productAmount: 
    get () 
      this.product.DefaultAmount
    ,
    set (newAmount) 
      // doing something
    
  

问题是get() 中的this.product 未定义。

有没有办法在计算函数的getter中引用v-for的动态变量?

【问题讨论】:

VueJS How can I use computed property with v-for的可能重复 【参考方案1】:

如果您想使用 computed 属性,您应该创建一个子组件并将产品作为属性传递 (&lt;Procuct v-for="p in products" :product="p"/&gt;)。

或者,如果它不是一项昂贵的操作,您可以轻松地将 computed 替换为 method 并使用它:

...
methods: 
  getAmountForProduct(product) 
    return product.DefaultAmount
  

【讨论】:

以上是关于从计算函数的 getter 中引用 v-for 元素的主要内容,如果未能解决你的问题,请参考以下文章

vuejs中的v-for怎样动态增加循环数据

如何从计算属性中使用 v-for?

在另一个计算属性上调用 getter 不是测试中的函数

如何使用 Vuetify 网格在 v-for 循环中显示商店项目?

QQmlListProperty :为什么以下getter函数有效?

vuexgetters