我从Ember – Automatically redirect to firstObject得到了部分解决方案,但是它没有按预期工作:
我的路由器:
App.Router.map(function() {
this.resource('races', { path: '/'}, function() {
this.resource('race', { path: '/:race_id'}, function() {
this.route('edit');
this.route('delete');
this.route('splits');
});
this.route('create');
this.route('info');
});
});
基本上,我有一个比赛列表,到达比赛具有时间/步伐视图(比赛资源).我想要的是永远不要进入种族资源,因此,如果我正在查看种族并将其删除,我将被重定向到第一个种族.
使用Ember – Automatically redirect to firstObject的解决方案,一切似乎都重定向到了第一场比赛,在那一刻,我所有的联系和动作都中断了,我“不能离开”第一场比赛.
这是我从另一篇文章中实施解决方案的方法:
App.RacesRoute = Ember.Route.extend({
model: function() {
return this.store.find('race');
},
redirect: function(model) {
var firstRace = this.modelFor('races').get('firstObject');
this.transitionTo('race', firstRace);
}
});
解决方法:
redirect有两个参数传递给它,即模型和转换对象.转换具有属性targetName,您可以在其中根据其值有条件地重定向.
redirect: function(model, transition){
if(transition.targetName =='races.index'){
this.transitionTo('race', model.get('firstObject'));
}
}