特定のフィールドが特定の値に変更された場合、コレクション内のモデルの変更をリッスンすることは可能ですか?
「change:fieldName」のようなものが存在することは知っています。「changeTo: fieldName = true」のようなものを探しています。
特定のフィールドが特定の値に変更された場合、コレクション内のモデルの変更をリッスンすることは可能ですか?
「change:fieldName」のようなものが存在することは知っています。「changeTo: fieldName = true」のようなものを探しています。
そうするための「近道」の方法はありません。通常の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();
}
}
一般的なケースではうまく機能しないため、明示的な値をリッスンすることはできませんが、一般的なハンドラーに簡単にバインドして、それに基づいてコードを実行できます。
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
}
});