Я знаю, что я могу установить значение атрибута модели базовой линии, чтобы оно не вызывало событие, используя {silent: true}. Я также знаю, что если я установлю атрибут модели на уже имеющееся значение, это не вызовет событие изменения, что почти всегда хорошо. Однако есть ли способ заставить обновление для модели инициировать событие изменения, даже если оно установлено на одно значение?Могу ли я заставить обновление атрибуту модели регистрироваться как изменение, даже если это не так?
Так что, если в моей модели я поставил:
defaults:{
attributeToChange: "myValue"
}
И тогда в целях использования этой модели я называю:
this.model.set('attributeToChange', 'myNewValue', {silent:true});
значение будет меняться, но ни одно событие изменений не будет уволен , Но что, если бы я хотел, чтобы событие изменения срабатывало всякий раз, когда значение атрибута было установлено независимо от того, на что оно было установлено? Так что если вместо этого я просто сделал
this.model.set('attributeToChange','myValue');
Есть ли параметр, который я могу добавить, который заставит это рассматриваться как изменение? Я считаю, что я могу использовать
this.model.trigger('change:attributeToChange');
, но я хотел бы знать, если есть способ, чтобы заставить событие изменения стрелять без этого.
Вопрос о бонусе: если я установил атрибут модели к уже имеющемуся значению, делает ли это атрибут предыдущим значением, которое у него было до того, как я инициировал изменение?
this.model.set('attributeToChange','someValue');
this.model.set('attributeToChange','anotherValue');
this.model.set('attributeToChange','anotherValue');
console.log(this.model.previous('attributeToChange')); //someValue or anotherValue?
Хорошо, позвольте мне попытаться ответить на мой собственный бонус вопрос, так как я понял, что это будет достаточно легко проверить сразу после того, я написал это: кажется, что если установить значение атрибута модели на значение, которое она уже имеет, предыдущее значение модели для этого атрибута _ (this.model.previous (...)) _ будет регистрироваться как то, что было до того, как вы установите значение _new_ (но дублируетесь). Поэтому приведенный выше пример должен написать «anotherValue» на консоли. – flyingace