Подтвердить что ты не робот

Правильный способ привязки нескольких изменений атрибутов к модели 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!');
    });
  }
});
4b9b3361

Ответ 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", ...)