0

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 の前に子コンポーネントのプロパティに割り当てられていました。

4

1 に答える 1

2

これは主に可観測性を伴う必要があります。では、オブザーバビリティinitが設定されていないためthis.errors = []、 とthis.set('errors', [])は機能的に類似しています。

this.errors = []ライフサイクル フック内で行うdidUpdateAttrsと、関連する計算されたプロパティとテンプレートが更新されません。getこれは、現在、setKVO に準拠する必要があるためです。

于 2016-05-16T06:58:26.207 に答える