Запретить запуск одного атрибута this.bind ("change") - PullRequest
1 голос
/ 01 сентября 2011

В Backbone.js у меня есть модель, к которой я привязываю событие изменения, но я хочу предотвратить это при определенных изменениях атрибутов.Например, я хочу, чтобы он срабатывал при каждом вызове model.set(), , за исключением при вызове model.set({arbitraryName: value}).

Вот что у меня есть:

this.bind("change", function() {
  this.update();
});

Но я понятия не имею, как определить, что устанавливается - какие-либо идеи?

РЕДАКТИРОВАТЬ

Похоже, я могу позвонить

model.set({arbitraryName: value}, {silent: true}) 

для предотвращения запуска события change (что работает для того, что мне нужно), но что, если у меня есть что-то вроде:

this.bind("change:arbitraryName", functionName)

1 Ответ

3 голосов
/ 01 сентября 2011

Вы можете использовать hasChanged в обработчике событий?

var self = this;
this.bind("change", function() {
    if(!self.hasChanged("someAttribute")){
        self.update();
    }
});

Я не уверен, что полностью понимаю ваш вопрос.Пожалуйста, обратите внимание на разницу выше и ниже.

this.bind("change:someAttribute", function(){
    self.update();
});

При первом изменении срабатывает update при любом изменении, где someAttribute остается постоянным.Второй вызовет обновление при любом изменении someAttribute.

Надеюсь, это поможет.

...