ルートアクション内のルートモデルにアクセスすることは可能ですか?
ルートモデル内の複数のオブジェクトをテンプレートに渡します。
model: function() {
return {
employeeList : this.store.findAll("employee"),
employee : Ember.Object.create()
}
}
ルートアクションから、ルートmodel.employeeを変更したいと思います。以下を試しましたが、オブジェクトが取得されません。
actions:{
editAction : function(id) {
var emp = this.get("model");
console.log(emp.employee);
}
}
誰かがモデルオブジェクト(従業員)を取得して変更するためのソリューションを提供できますか?
最初の問題は、モデルフックからpromiseを返す必要があることです。そうすれば、移行は解決の約束を待ちます。 _return { /*...*/};
_は、オブジェクト自体にPromiseが含まれている場合でも、Promiseではなくオブジェクトを返します。解決策は、次のように_Ember.RSVP.hash
_を使用することです。
_model() {
return Ember.RSVP.hash({
employeeList: this.store.findAll('employee'),
employee: Ember.Object.create()
});
}
_
これにより、すべての内部プロミスが解決されたときに解決されるプロミスが返されます。
2番目の問題は、ルートでthis.get('model')
を使用できないことです。考えてみれば、model
プロパティはフック自体であり、解決されたモデルではありません。ソリューション:
this.modelFor(this.routeName);
が現在のルートのモデルを返します。this.controller.get('model')
のようなコントローラーを介してルート内のモデルにアクセスできます。this.set('employeeModel', model);
のようなことを行うことができます。this.get('context')
ルートアクションでモデルにアクセスできます。