0
配列が更新されるたびに必要なHTMLコンテンツが自動的に更新されるように、コンポーネントに反応性配列プロパティを定義したいとします。Emberjs配列プロパティの取得が返されない
これは簡単なことだと思っていましたが、期待通りに機能しませんでした。 this.get('array')
でプロパティを取得するたびに、undefined
を返します。
// components/test-component.js
export default Ember.Component.extend({
_array: [],
array: Ember.computed('_array',{
get(key) { return this.get('_array'); },
set(key,value) { this.set('_array', value); }
}),
isEmpty: Ember.computed('array', function() {
// Here, this.get('array') returns undefined. Why?
return this.get('array').length;
}),
actions: {
addNew() {
this.get('array').push(Date.now());
}
},
init() {
this._super(...arguments);
this.set('array', [1,2,3]);
},
});
また、私は右のそれを設定した後、アレイのプロパティを取得する場合init
方法では、それはまたundefined
を返すことに気づきました。なぜこうなった?
ここにはtwiddleがあります。それは、配列を反復し、すべての項目のリストを表示するはずですが、未定義を返すので、現在クラッシュしています。
をプロトタイプ拡張機能を無効にしてください。 –
@PatsyIssaは、デフォルトでは、ネイティブの 'Array'がEmberによって拡張されたプロトタイプを持っていることを意味します(つまり、' Array'オブジェクトはデフォルトでEmber配列です)。 –
[ember-disable-prototype-extensions](https://github.com/ember-cli/ember-disable-prototype-extensions)がインストールされていない限り修正してください。 –