次のコードがあり、変更を単一の属性「attribute_1」にバインドします。
var Mine = Backbone.Model.extend({
initialize: function() {
this.bind("change:attribute_1", function() {
console.log('changed!');
});
}
});
2つの属性をバインドするにはどうすればよいですか?これは機能しません:
var Mine = Backbone.Model.extend({
initialize: function() {
this.bind("change:attribute_1, change:attribute_2", function() {
console.log('changed!');
});
}
});
これもしません:
var Mine = Backbone.Model.extend({
initialize: function() {
this.bind("change:attribute_1 change:attribute_2", function() {
console.log('changed!');
});
}
});
そのような「バルクバインド」機能が存在するかどうかはわかりません(機能リクエストを開くことができます。便利なようです)。
それらを個別にバインドできます。
var Mine = Backbone.Model.extend({
initialize: function() {
var listener = function() { console.log('changed'); };
this.bind("change:attribute_1", listener);
this.bind("change:attribute_2", listener);
}
});
または、すべての変更をリッスンする(そしてリスナーでフィルターする)ことができます。
var Mine = Backbone.Model.extend({
initialize: function() {
var listener = function() { console.log('changed'); };
this.bind("change", listener);
}
});
Backbone.js 0.9.0以降、bind()
関数( on()
に名前が変更されました)は、スペースで区切られたイベントのリストをサポートします。
model.on("change:title change:author", ...)
// equivalent to
model.bind("change:title change:author", ...)