Правильный способ привязки нескольких изменений атрибутов к модели Backbone.js
У меня есть следующий код, где я привязываю изменение к одному атрибуту "attribute_1".
var Mine = Backbone.Model.extend({
initialize: function() {
this.bind("change:attribute_1", 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() {
this.bind("change:attribute_1 change:attribute_2", function() {
console.log('changed!');
});
}
});
Ответы
Ответ 1
Я не знаю, существует ли такая функция "объемного связывания" (вы можете открыть для нее запрос функции, это кажется полезным).
Вы можете связать их отдельно:
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);
}
});
Ответ 2
Как и в Backbone.js 0.9.0, функция bind()
(которая была переименована в on()
) список событий:
model.on("change:title change:author", ...)
// equivalent to
model.bind("change:title change:author", ...)