私は別のソリューションを使用することになりました:
this.resource('video', function() {
this.route('index', {path: '/'});
this.route('item', {path: ':id'});
});
これらのルートは以下をサポートします。
/video
- デフォルト/フィクスチャ モデルを表示
/video/123
- モデル 123 を表示
ユーザーが にアクセスするとき/video
、VideoIndexRoute は ID なしで VideoItemRoute にリダイレクトする必要があります。
var VideoIndexRoute = Em.Route.extend({
afterModel: function() {
// this is the tricky part
this.replaceWith('video.item', '');
}
});
ここで、VideoItemRoute はモデルが関連付けられているかどうかを確認する必要があり、モデルが見つからない場合は、デフォルトのフィクスチャまたは新しいフィクスチャを使用する必要があります。
var VideoItemRoute = Em.Route.extend({
model: function(param) {
if (param.id) {
return this.store.find('video', param.id);
}
},
setupController: function (controller, model) {
if (!model) {
model = this.store.createRecord('video',{
name: 'default Name'
});
// or use fixture...
}
this._super(controller, model);
}
});