Почему назначение свойств в init и didUpdateAttrs отличается?
В Ember.js Guide есть такой пример:
import Ember from 'ember';
export default Ember.Component.extend({
init() {
this._super(...arguments);
this.errors = [];
},
didUpdateAttrs() {
this._super(...arguments);
this.set('errors', []);
},
...
});
Зачем присваивать errors
собственность отличается в init
а также didUpdateAttrs
? Каковы их различия?
ОБНОВЛЕНО согласно ответу @locks:
Когда устанавливается наблюдаемость? После init? Но значения родительского компонента были назначены свойствам дочернего компонента до init.
1 ответ
Решение
Это должно быть в основном с наблюдаемостью. На init
Наблюдаемость не была установлена, поэтому this.errors = []
а также this.set('errors', [])
функционально похожи.
Если бы вы должны были сделать this.errors = []
внутри didUpdateAttrs
ловушка жизненного цикла, соответствующие вычисленные свойства и шаблон не будут обновляться. Это потому, что вам нужно get
/set
быть КВО-совместимым.