我当前使用骨干集的each
方法时,我正在经历非常不寻常的行为。在我的应用中,我允许用户编辑现有模型,其中包括编辑和添加多个时间限制到该模型。模型及其时间约束与主干关系有关。每当用户单击以添加新的时间约束时,我就会在关系中添加时间表模型而不保存。如果用户决定取消编辑,则应从关系中删除所有新/未保存的时间表。但是,当我浏览我的收藏时,它似乎没有执行最终迭代。
我在这里构建了一个JSFIDDLE来演示此行为:http://jsfiddle.net/richardstokes/zzfgz/9/
遵循的步骤是:
- 单击"编辑策略"
- 使用"新时间约束"按钮添加2个或更多新的时间约束
- 通过单击"取消编辑"来取消编辑
您会注意到,控制台打印了time_constraints集合的起始长度和饰面长度,以及删除未保存模型后的中间长度。即使它们都是新/未保存的,它似乎总是停止缩短并留在收藏中。
。,如果有人会帮助我解决这个问题,我会全天陷入困境。
您正在删除物品,因为迭代了时间限定,这可能会导致不确定的行为。尝试先获取新的时间限定的列表,然后将它们作为数组传递以删除():
var toRemove = this.model.get('time_constraints').filter(function (timeConstraint) {
return timeConstraint.isNew();
});
this.model.get('time_constraints').remove(toRemove);