I have the following code, where I bind a change to a single attribute "attribute_1".
var Mine = Backbone.Model.extend({
initialize: function() {
this.bind("change:attribute_1", function() {
console.log('changed!');
});
}
});
How do I bind two attributes? This doesn't work:
var Mine = Backbone.Model.extend({
initialize: function() {
this.bind("change:attribute_1, change:attribute_2", function() {
console.log('changed!');
});
}
});
Nor does this:
var Mine = Backbone.Model.extend({
initialize: function() {
this.bind("change:attribute_1 change:attribute_2", function() {
console.log('changed!');
});
}
});
As of Backbone.js 0.9.0, the bind()
function (which has been renamed to on()
) supports a space-delimited list of events:
model.on("change:title change:author", ...)
// equivalent to
model.bind("change:title change:author", ...)
I don't know if such a "bulk-bind" function exists (you could open a feature request for it, it seems useful).
You can bind them separately:
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);
}
});
Or you can listen to all changes (and then filter in the listener):
var Mine = Backbone.Model.extend({
initialize: function() {
var listener = function() { console.log('changed'); };
this.bind("change", listener);
}
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With