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属性不同?他们有什么区别?initdidUpdateAttrs

根据@locks 答案更新:

什么时候设置可观察性?初始化后?但是父组件的值在初始化之前已经分配给子组件的属性。

4

1 回答 1

2

这必须主要与可观察性有关。On init,可观察性尚未设置,因此this.errors = []this.set('errors', [])功能相似。

如果您要this.errors = []didUpdateAttrs生命周期挂钩内执行操作,则相关的计算属性和模板将不会更新。这是因为您当前需要get/set要符合 KVO。

于 2016-05-16T06:58:26.207 回答