3

特定のフィールドが特定の値に変更された場合、コレクション内のモデルの変更をリッスンすることは可能ですか?

「change:fieldName」のようなものが存在することは知っています。「changeTo: fieldName = true」のようなものを探しています。

4

2 に答える 2

5

そうするための「近道」の方法はありません。通常のchangeイベントをリッスンする必要があり、リスナーで、値が興味深いものに変化したかどうかを確認します。次に、イベントを伝播するか、新しいイベントを発生させるか、何かを行います。

Backbone.Collection.extend({

    initialize: function() {
        this.on('change:property', this.onChange);
    },

    onChange: function(e) {
        // sorry for pseudo-code, can't remember syntax by heart, will edit
        if (e.newValue == true)
            myLogic();
    }

}
于 2013-07-30T22:25:52.837 に答える
1

一般的なケースではうまく機能しないため、明示的な値をリッスンすることはできませんが、一般的なハンドラーに簡単にバインドして、それに基づいてコードを実行できます。

var MyCollection = Backbone.Collection.extend({
  initialize: function(models, options){
    this.on('change:myProperty', this.changeMyProperty_, this);
  },

  changeMyProperty_: function(model, value){
    if (value) this.myPropertyTrue_(model);
  },

  myPropertyTrue_: function(model){
    // Do your logic
  }
});
于 2013-07-31T05:50:48.047 に答える