gpt4 book ai didi

ember.js - 在 ember 数据中,在 forEach 循环中调用 destroyRecord 会破坏循环吗?

转载 作者:行者123 更新时间:2023-12-02 19:33:18 25 4
gpt4 key购买 nike

我正在为我的一个项目开发一个简单的标签模型。我已经在 Angular 中实现了类似的东西,但我想在 Ember 中尝试一下。模型代码如下

Tag = DS.Model.extend {
name:DS.attr('string')
user:DS.belongsTo('user')
appliedTags:DS.hasMany('AppliedTag')

obliterate:()->
#destory the associated applied tags
this.get('appliedTags').forEach( (appliedTag)->
console.log(Ember.inspect(appliedTag))
appliedTag.destoryRecord()
)
#destory the record
this.destroyRecord()
}

fixtures = [
id:1
name:'Category 1'
user:1
appliedTags:[1,5]
]

Tag.reopenClass
FIXTURES: fixtures

如果我注释掉appliedTag.destoryRecord(),一切都很好。然而,在第二次通过 forEach 循环时,appliedTag未定义

最佳答案

在迭代时修改集合的内容会导致重大问题。这就是您在这里看到的问题,您正在销毁记录,这会修改正在迭代的集合。当记录从存储中删除/销毁时,Ember 的 hasMany 集合将删除记录。最简单的解决方案是将内容复制到不同的数组,当您执行此类操作时,该数组不会被修改。

this.get('appliedTags').toArray().forEach( (appliedTag)->
console.log(Ember.inspect(appliedTag))
appliedTag.destoryRecord()
)

关于ember.js - 在 ember 数据中,在 forEach 循环中调用 destroyRecord 会破坏循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25715738/

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