2

次のコードを含むコンポーネント (Ember.Component) 内に「新しい」アクションがあります。

var store = this.get('store');
store.createRecord('child');

それでも、次のエラーが発生します。

TypeError: 'undefined' is not an object (evaluating 'store.createRecord')

これを進めることができた唯一の方法は、次を使用して親オブジェクト(常にコンポーネントに設定されている)を見つけることです。

store = this.get('parent.store');

次に、上記の createRecord 呼び出しに進みます。これは続行する「通常の」方法ですか?

4

1 に答える 1

1

ストアはコンポーネント内に存在しないため、コンポーネントに渡すか、親コントローラーから取得する (またはコントローラーに渡す) 必要があります。

Ember データ移行ドキュメント経由 ( https://github.com/emberjs/data/blob/master/TRANSITION.md )

一般に、コンポーネントでモデルを直接検索することはアンチパターンであり、コンポーネントを含むテンプレートで必要なモデルを渡すことをお勧めします。

それについての悪い部分は、コンポーネントの ember データへの依存関係を追加していることです。これは、外の世界にとらわれないはずです。

于 2013-11-13T05:45:19.117 に答える