Ember.Route.model
params
変数にアクセスできますが、アクセスできEmber.Route.setupController
ません。パスに複数の動的セグメントがあり、それらすべてをテンプレートで使用する必要があるため、これは私にとって厄介です。
具体的には、私のパスは次のようになります/project/:project_id/task/:task_id
。タスクは、1つだけでなく、多くのプロジェクトに属することができることに注意してください。したがって、タスク自体を見ているだけでは、どのプロジェクトを見ているのかわかりません。URLにあるプロジェクトIDを使用する必要があります。これが私が現在それをしている方法です:
App.TaskRoute = Ember.Route.extend({
// This works just fine:
serialize: function(model) {
return {
task_id: model.get('id'),
project_id: this.modelFor('project').get('id')
};
},
model: function(params) {
this.set('parentProjectId', params.project_id);
return App.Task.find(params.task_id);
},
setupController: function(controller, model) {
var parentProject = this.modelFor('project') ?
this.modelFor('project') :
App.Project.find(this.get('parentProjectId'));
controller.set('parentProject', parentProject);
controller.set('content', model);
}
});
多分私は妄想的です、これはただハッキーな感じがします。ルートがパラメータにアクセスできるようになっている場合は、すでにparams
プロパティがアタッチされています。もっと良い方法はありますか?
編集:上記のコードを更新しました。また、私のルートは次のようになります。
App.Router.map(function() {
this.resource('project', { path: '/project/:project_id' });
this.resource('task', { path: 'project/:project_id/task/:task_id' });
});