Я пытаюсь обновить свой проект до Ember 1.13, и я немного смущен поведением нового attrsкомпонента, особенно когда я должен их соблюдать.Ember.js 1.13: Правильный способ наблюдения переданного атрибута компонента?
Например, мой тестовый компонент наблюдает бар, который является параметром, переданным снаружи. Я знаю, что в новом движке Emmer's Glimmer компонент перераспределяется после изменения любого его атрибута. Я не могу понять, что наблюдатель также будет уволен в это время, если я буду наблюдать attrs.bar (я не изменял bar!). Но если я наблюдаю бар, тогда все будет хорошо.
Пример кода:
HTMLBar:
{{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
Кто-нибудь знает, почему наблюдатель был запущен?
Ваш jsbin, похоже, не работает для меня, но я портирую, чтобы лучше понять ваш вопрос: https://ember-twiddle.com/acb8cbf30c7dbbd0a4b2 –