0

我纯粹在前端使用 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"))过滤掉价格“未知”开头的项目

该代码如下所示:

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

在我的收藏中,我有 10 个对象/模型,价格 ==“未知”“未知” ,其中只有 5 个被删除!正则表达式正确,循环进入 IF 块 10 次...

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

4

1 回答 1

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!

于 2013-09-10T08:54:26.463 回答