【发布时间】:2015-01-27 02:17:02
【问题描述】:
数据绑定很好,很好。但是这一次它妨碍了我。
我有一个默认的users 数组,我在我的页面上的每个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() 将用户插入到项目中,因此数据绑定在某处播放。确实是这样,我该如何防止这种行为?
【问题讨论】:
-
当您使用数组/对象并已初始化双向数据绑定时,所有元素将具有相同的引用。如果您更改数据,则无法阻止其他人获得更改,如果您希望在 那个对象上进行双向数据绑定。
-
@FuzzicalLogic:那我该如何预防呢?我只需要
item的数组作为数据绑定对象,而不是它的用户。 (项目对象的结构为[{"id" : int, "text": string, "users": [{"id": int, "checked": bool}]}])
标签: javascript data-binding polymer 2-way-object-databinding