0

Backbone.js を純粋にフロントエンド側で使用して、その非常に優れた機能の一部を活用していますが、苦労しています。

1 つの 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/#filter および http://backbonejs.org/#Collection-set

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

reg テストでは、モデルがコレクションを固定し続けるためにテストするset必要があり、スマートな削除/追加を実行します。さらに、Ulugbek が言ったように、ビューを反復しながらビューを変更することはありません。

コーヒースクリプトを知らなくてごめんなさい!

于 2013-09-10T08:54:26.463 に答える