gpt4 book ai didi

javascript - 强调每个方法没有运行在整个 Backbone 集合中

转载 作者:行者123 更新时间:2023-11-28 12:05:59 26 4
gpt4 key购买 nike

我有一个表,当新项目添加到集合中时,我将填充该表;当从该集合中删除项目时,我将填充已删除的项目集合。

然后我有一个保存按钮,可以触发集合上的保存/删除事件。

保存工作正常,但只有一半的删除工作有效,我很困惑。

class MyApp.Collections.DeletedTasks extends Backbone.Collection
model: MyApp.Models.Task

destroy: () ->
console.log('destroy the collection size: ' + @.models.length)
_.each(@.models, @sendDelete)

sendDelete: (model) ->
console.log('deleting model with id: ' + model.get('id'))
model.destroy()

控制台输出

Done with Adding/Updating Collections
destroy the collection size: 6
deleting model with id: KSc18d06fefddbebd2ade74bcab4c670c907
deleting model with id: KS07cb95935b1caf3817758739224a3e1a2f
deleting model with id: KS6f473b3e15740fe7c6c0909e14986700a9

发生了什么?为什么只做了3个?我该如何调试这个?

感谢任何帮助!

最佳答案

蒂姆已经给出了一个很好的答案,但还有更好的方法:

Underscore 的迭代方法已经是 Backbone 集合的一部分,这意味着而不是

_.each(@.models, @sendDelete)

你可以简单地写

@each(@sendDelete)

这还负责将 @models 转换为数组,防止 destroy() 搞乱迭代。

您永远不必直接使用@models;它应该被视为一个内部属性,就像模型上的 @attributes 一样。

关于javascript - 强调每个方法没有运行在整个 Backbone 集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9591536/

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