3

属性が変更されたときに呼び出されるバインド関数を持つ名前属性を持つモデルがあります。

var Workitem = Backbone.Model.extend({
                                 initialize: function(){
                                 this.bind('change:name', function() {
                                           alert('name');
                                           }
                                           });
                                 },
                                 defaults: {
                                 name: 'Name'
                                 }
                                 });

単一のモデルを取得すると、これが機能し、属性を設定したときとデータを取得したときに変更イベントがトリガーされます。

しかし、コレクションを作成したので、フェッチ メソッド中にコレクションにフェッチされたモデルごとにイベントがトリガーされるようにします。

var WorkitemList = Backbone.Collection.extend({
                                       model: Workitem,
                                       });

var workitemsList = new WorkitemList();
workitemsList.fetch();

これは可能ですか?

4

3 に答える 3

1

インポートが完了すると、フェッチはコレクションの「リセット」イベントをトリガーします。それを聞いて、それからモデルを発射/混乱させます。

于 2012-10-01T20:50:49.153 に答える
0

コレクションをフェッチすると、コレクション内のモデルがサーバーの応答に置き換えられます。コレクション内の各モデルが更新されるわけではありません。これは、必要なものです。最も簡単な修正は、各モデルをフェッチするコレクションをループすることですが、サーバーに複数のリクエストがあり、新しく追加されたモデルを見逃す..

あなたが達成したいことのために、コレクションの別のインスタンスを作成してフェッチし、その中のモデルを元のコレクションと比較し、必要に応じて更新する必要があると思います..本当のきれいではありません..

于 2012-06-14T13:07:34.947 に答える
0

コレクションのfetch-function をオーバーライドして、各モデルで個別に fetch を呼び出すことができます。しかし、それは非常に力ずくです。

fetch: function() {
  for (var model: this.models) {
    model.fetch();
  }
}

誰でもこれを達成するためのより良い方法を持っていますか?

于 2012-06-14T15:11:22.000 に答える