我使用Polymer的阵列突变方法进行阵列突变。
this.allRules = [{name: "abc", enabled: true}];
var item = this.allRules[index];
item.name = "abcdxfdsa";
item.enabled = enabled;
// console log out [Object]
console.log(this.allRules);
this.splice('allRules', index, 1);
// Instead of logging out [], it logs out [splices: Object]
console.log(this.allRules);
this.push('allRules', item);
// It logs out [Object, splices: Object]
console.log(poly.allRules);
令人烦恼的是这个。当我将this.allRules
绑定到dom-repeat
模板(例如下面的模板)时,在更新绑定数据时,它会显示拼接的项目而不是新添加的项目。因此,在拼接和推送之后,我得到"abcdxfdsa"
,而不是将abc
作为项目名称,这是拼接前的值。以下是示例dom-repeat
数据绑定的链接。 Polymer dom-repeat how to notify array updated
答案 0 :(得分:3)
实际上应该从数组中删除该项目。它第二次以[splices: Object]
注销,只是为了显示有关此数组的更多信息,因为它有一个名为splices的属性。如果你在Firefox中运行相同的东西,你仍会看到[object]
所以我想这只是一个Chrome控制台助手的事情。
要获取要更新的值,一种方法是将this.push
调用包含在this.async
方法中。
this.async(function() {
this.push('allRules', item);
console.log(item);
console.log(this.allRules[0].name);
// returns 1, meaning it's filled with one item again
console.log(this.allRules.length);
});
查看此plunker的工作样本。