未更新Vue.js的绑定复选框

未更新Vue.js的绑定复选框,vue.js,Vue.js,我很难从我的应用程序中拿出一大块代码来演示这个问题,所以我希望仅通过描述它就可以清楚地得到一些有用的反馈 我有一个产品表,由AJAX调用返回的数组填充。作为调用的一部分,我向数组中的每个对象添加另一个属性: _.each(this.productList, (product, index) => { product.selected = true; }); 在我的HTML表格中,我有以下内容: <tr v-for="(product, index) in thi

我很难从我的应用程序中拿出一大块代码来演示这个问题,所以我希望仅通过描述它就可以清楚地得到一些有用的反馈

我有一个产品表,由AJAX调用返回的数组填充。作为调用的一部分,我向数组中的每个对象添加另一个属性:

  _.each(this.productList, (product, index) => {
      product.selected = true;
  });
在我的HTML表格中,我有以下内容:

<tr v-for="(product, index) in this.productList" :data-code="product.code">
          <td class='selected'>

            <input type="checkbox" :name="'selected'+index" v-model="product.selected">
          </td>
etc.
这看起来与最初的AJAX调用大致相同,即在productList数组中循环并设置数组中每个产品对象的“selected”属性。通过在Chrome中使用Vue开发工具,我可以看到它正是这样做的,将“product.selected”设置为true或false。但问题是,它不会更新用户界面-即使每个绑定到的属性已从true更改为false,复选框都保持选中状态


这对我来说毫无意义。当绑定对象被更改时,为什么复选框没有被取消选中?

我知道为时已晚,但它可能会帮助某些人 我在文档中查看了同样的问题,但没有发现任何东西

在处理代码时,我发现当绑定到添加到原始对象的新属性时,更新DOM会出现一个问题

我的解决方案是在新数组中加载数据,然后将新属性添加到同一数组中,然后将新数组复制到数组中“在本例中的数据对象中声明this.productList”


我不知道这是否是Vue中的问题

替换
product.selected=true带有
Vue.set(产品,选定,真)

如果选择的
未在初始化时设置,则它将为falsy,但不会是被动的


另外
Vue.set(产品,已选择,此.allSelected)

这应该可以正常工作。您是否在绑定
productList
或该数组中的任何元素?最初如何设置
productList
?它不是计算属性,对吗?productList在数据中,如[]。我通过AJAX调用中的“this.productList=data.productList”分配它。我没有将productList绑定到其他任何地方,没有。正如我所说的,绑定在第一次工作时就起作用了,但对数组的更新不起作用,我不明白这一点。我不知道为什么它没有更新。我看不到您的代码有任何问题。请看一看这是你的代码,但它是完全功能的。也许你可以看到与你的代码相比有什么不同。它是否适用于Firefox?我只有Chrome的pb,它在Firefox(v58,每晚)中工作。
  toggleSelection(){
    this.allSelected = !this.allSelected; //initially set to true in data object
    _.each(this.productList, (product, index) => {
      product.selected = this.allSelected;
    });
  },
var arr = []
this.loaddata(arr);    //this for example loads data from ajax call ,axios or whatever 
  _.each(arr, (product, index) => {
      product.selected = true;
  };

this.productList = arr.slice(); //copy the array