私はcrud-route-mixin
を構築しています。ここでは、ルートのデフォルトの機能とアクションを定義しています。Emberのリトリーブレコードオブジェクトの種類を認識
関数の1つが引数としてクエリオブジェクトを持ちます。アクション内私は、呼び出しを実行します。
_doSomething(query) {
query.then(result => {
//do something default with this result
})
}
ルートが異なるkind of methodsと_doSomething
関数を呼び出します。たとえば:
私が思っていたルートA
export default Ember.Route.extend(CrudRoute, {
setupController() {
this._super(...arguments);
this._doSomething(this.get('store').findAll('paper'));
}
}
ルートB
export default Ember.Route.extend(CrudRoute, {
setupController() {
this._super(...arguments);
this._doSomething(this.get('store').findRecord('blog-post'));
}
}
、それはクエリオブジェクトのメソッド名やタイプを取得することは可能でしょうか?だから私はこのようなことをすることができました(擬似コード):
_doSomething(query) {
query.then(result => {
if (query.getRetrieveMethodName() === 'findAll') {
//do something default with this array result
} else if (query.getRetrieveMethodName() === 'findRecord') {
//do something default with this single record result
}
})
}
P.S.ペイロードが単一のレコードであるか、配列がオプションではないかどうかを確認してください。なぜなら、エラー処理においてもこの点が必要であるからです。
'しかし、コントローラに必要なデータを提供するために、より単純なことではないでしょうか?'。はい、この質問は私の現在の状況を単純化したものです。 'instanceof' [オブジェクト]は必要な解決策を提供しますので、多くの感謝です! –