0

数据绑定很好,很好。但是这一次它妨碍了我。

我有一个默认的 s 数组,我在我的页面上user的每个中插入。item这个想法是每个item都有一个复选框user

目前我像这样创建我的emptyUsers-item:

for(var i = 0; i < this.users.length; i++){
    this.emptyUsers.push({"id": this.users[i].id, "set": false});
}

注意:this.users来自数据库

然后我将此数组推送到页面上的每个项目

item = {"id": data[i].itemId, "text": data[i].text, "users": this.emptyUsers};

注意:data来自数据库

现在的问题是,当我更改set项目中一个用户的 - 属性时,该用户的set所有项目的 - 属性都会更改。我认为这是由于数据绑定在某处播放,因为我曾经push()在项目中插入用户。确实是这样,我该如何防止这种行为?

4

1 回答 1

1

发生这种情况是因为您为每个对象提供了对一个数组的引用。emptyUsers如果每个对象从一开始就应该有自己的数组,则可以在第一次绑定数据时通过调用slice()on创建一个副本emptyUsers。这只会创建一个浅拷贝;如果您需要每个对象在数组中也有自己的元素副本,您应该搜索“js array deep copy”:

item = {"id": data[i].itemId, "text": data[i].text, "users": this.emptyUsers.slice()};
于 2015-01-27T16:46:02.373 回答