从Backbone集合中删除模型时遇到问题

时间:2013-09-09 09:23:30

标签: javascript backbone.js

我纯粹在前端使用Backbone.js来利用它的一些非常好的功能,但它给了我很多时间。

我在一个div上的data-json属性中获取了我的JSON数组:

<div class="json-data" data-json = "[{ img: "aaa", price: "Bla Bla"... }]">

我像这样加载它:

//CoffeeScript
@baseCollection = new ComparisonCollection $(@el).find(".json-data").data("json") 

正确创建了集合。它有43个预期的型号。创建后我想过滤掉 模型使用此正则表达式/Unknown/.test(model.get("price“))来过滤掉以价格开头的项目”Unknown“

该代码如下所示:

@baseCollection.each (obj)-> 
  if /Unknown/.test(obj.get("price"))
    obj.collection.remove(obj)
, @

在我的收藏中,我有10个物品/模型 price ==“Unknown”“Unknown” 只有5个被删除!正则表达式是正确的,循环进入IF块10次......

我想我对remove()方法的理解有问题......

1 个答案:

答案 0 :(得分:0)

http://underscorejs.org/#filterhttp://backbonejs.org/#Collection-set

obj.collection.set(obj.collection.filter(function(o){
    return /Unknown/.test(o.get('price'));
}));

如果reg测试必须测试模型以确定集合,set将执行智能删除/添加。另外,正如Ulugbek所说,你仍然在修改你的观点,同时仍然在迭代它

很抱歉,我不知道coffeescript!