Ни один из предыдущих вопросов, которые я видел здесь, по-видимому, не охватывал тему использования Ember Computed Property и Ember Observer. Я понимаю, что Computed Property использует предыдущие атрибуты для создания нового атрибута и обновляется в цикле выполнения.Ember Computed Property vs Ember Observer
Person = Ember.Object.extend({
// these will be supplied by `create`
firstName: null,
lastName: null,
fullName: Ember.computed('firstName', 'lastName', function() {
return `${this.get('firstName')} ${this.get('lastName')}`;
})
});
Наблюдатель с другой стороны обновляется вне цикла выполнения, и может смотреть что-либо даже компьютерная собственность. Он реагирует на любые изменения.
Person = Ember.Object.extend({
// these will be supplied by `create`
firstName: null,
lastName: null,
fullName: Ember.computed('firstName', 'lastName', function() {
return `${this.get('firstName')} ${this.get('lastName')}`;
}),
fullNameChanged: Ember.observer('fullName', function() {
// deal with the change
console.log(`fullName changed to: ${this.get('fullName')}`);
})
});
В документации Ember указано, что наблюдатели обычно используют. Может ли кто-нибудь дать лучший пример правильного использования наблюдателей? Что еще они могут наблюдать, и каковы последствия неправильного использования и правильного использования?
Исходный код можно найти на Ember документации: https://guides.emberjs.com/v2.3.0/object-model/observers/
@toruzaburo «Использование наблюдателей за то, что должно быть вычислено, является одним из классических анти-шаблонов Ember». Таким образом, пример злоупотребления этим был бы наблюдателем, подсчитывающим количество элементов в магазине, когда вычисленное свойство могло бы это сделать? – Taztingo