1

私はこれを少し理解しようとしてきましたが、おそらく私より少し賢い人がこれをすでに知っています.

バックボーン 1.0.0 を使用しています。モデルの fetch メソッドによって更新されるコレクションがあります。モデルの解析段階では、Ajax 応答属性の 1 つが実際には内部のコレクションであり、それを個別に保存しています。Backbone.Collection.set() メソッドを使用してコレクションを更新しています。オブジェクトリテラルの配列として入ってきます。

Backbone.Collection.set() メソッドに問題があります。毎回、コレクション内のすべてのモデルを削除してから、それらのどれも変更されていない場合でも、それらをすべて追加し直すようです。コレクション all にバインドすることで、すべてのイベントを表示できます。

Backbone は、モデルが同じか、変更されたか、または削除または更新されたかをどのように判断しますか? ソースを見ているのですが、よくわかりません。各モデルの特定の属性を探していますか?

4

1 に答える 1

1

このCollection.setメソッドは、コレクションにモデルを渡してCollection.get何かを返すかどうかを確認することで、コレクションにモデルが存在するかどうかを判断します。

Collection.getモデルのidと を使用して既存の一致を検索し、.cidがない場合はid. は常に内部で生成されるためcid、渡されたオブジェクトにsetがない場合id、一致するものは見つからず、常に新しいものとして扱われます。

既存のモデルがある場合、そのsetメソッドは新しい属性で呼び出されます。によるとModel.set、新しい属性が古い属性と等しくない場合、変更イベントが発生します。

于 2013-06-14T18:25:55.730 に答える