计算变量不会调用set()方法。在v-for中将v模型用于计算变量

时间:2018-12-07 17:35:47

标签: vue.js

我的Vue:

new Vue({
    data: {
        ...
    },
    computed: {
        peaksAndEstimations: {
            get: function () { ... }
            set: function () { ... }

我无法收到迭代计算变量的新值:

<tr v-for="(peak, index) in peaksAndEstimations">
    <td>
        <input v-model="peak.estimation.name">
    </td>

set()方法不会在输入字段中的更改上调用。所有这些都可以与数据部分的 normal 变量一起使用。

我在做什么错了?

找到了另一则与此相关的帖子:here

2 个答案:

答案 0 :(得分:0)

https://www.reddit.com/r/vuejs/comments/741hwk/vfor_computed_value/

中的一些解决方法
  • 在父级中使用计算属性,该属性可映射到原始Array并生成所需格式的新Array。
  • 或添加一个新组件以呈现数组中的每个项目。例如如果父级然后是一个新的子级组件,其中包含您希望每个子级都可以访问的计算属性。
  • 或者您也可以在prop表达式中调用方法,以便可以在父组件上添加一个返回所需新值的方法。这可能性能较低,因为方法调用不会像计算的属性一样被缓存,但是我不明白为什么它不起作用。

答案 1 :(得分:0)

  

我在做什么错了?

您有一个带有setter的计算数组。设置器希望收到一个新的计算值-在您的情况下为数组。您的输入绑定到该数组元素的成员。您不能指望Vue组成一个修改后的数组并将其传递给数组设置器。

输入修改您的getter放入计算数组中的实际元素的成员。是否可以使用该修改取决于数组的组成方式。

如果要修改单个元素,则可能需要一个实际数组而不是一个计算数组。您为此目的是什么?