Я пытаюсь обновить свой проект до Ember 1.13, и меня немного смущает поведение новых attrs component, особенно когда я должен их наблюдать.
Например, мой тестовый компонент наблюдает за параметром bar, который передается извне. Я знаю, что в новом движке Ember Glimmer компонент перерисовывается при изменении любого из его атрибутов. Чего я не могу понять, так это того, что наблюдатель также будет уволен в это время, если я увижу attrs.bar (я не модифицировал bar!). Но если я понаблюдаю за самим bar, то все будет в порядке.
Пример кода:
HTML-бар:
{{test-cpnt foo=foo bar=bar}}
<input type="button" {{action 'tap'}} value="tap"/>
Контроллер:
foo: 1,
bar: 100,
actions: {
tap: function(){
this.set('foo', this.get('foo')+1);
}
}
Компонент:
App.TestCpntComponent = Ember.Component.extend({
barObv1: Ember.observer('bar', function(){
console.log('bar observer is fired!');
}),
barObv2: Ember.observer('attrs.bar', function(){
console.log('attrs.bar observer is fired!');
}),
});
Нажав кнопку, чтобы изменить значение foo, мы также активируем barObv2. Я создал jsbin для демонстрации: https://jsbin.com/qiwivu/2/edit?js,console,output
Кто-нибудь знает, почему наблюдатель сработал?