gpt4 book ai didi

javascript - polymer 防止数据绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 10:59:14 28 4
gpt4 key购买 nike

数据绑定(bind)很好,非常好。但这一次它妨碍了我。

我有一个默认的用户数组,我将其插入到页面上的每个项目中。这个想法是每个项目都有一个针对每个用户的复选框。

目前我创建了我的 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};

注意:数据来自数据库

现在的问题是,当我更改项目中某个用户的 set 属性时,该用户的所有项目的 set 属性都会更改。我认为这是由于数据绑定(bind)在某处发挥作用,因为我使用 push() 将用户插入到项目中。确实如此,我该如何防止这种行为?

最佳答案

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

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

关于javascript - polymer 防止数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28162152/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com