我从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');
});
});
基本上,我有一个种族列表,并且到达种族有一个时间/步伐视图(race
资源)。我想要的是永远不会落在races
资源上,所以如果我正在查看race
并删除它,我会被重定向到第一个race
。
使用Ember - Automatically redirect to firstObject中的解决方案,一切似乎都会重定向到第一个race
,此时我的所有链接和操作都会中断,我“无法离开”第一个race
路由。
以下是我从其他帖子实施解决方案的方法:
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);
}
});
答案 0 :(得分:3)
redirect
传递了两个参数,即模型和转换对象。转换具有属性targetName
,您可以根据其值有条件地重定向。
redirect: function(model, transition){
if(transition.targetName =='races.index'){
this.transitionTo('race', model.get('firstObject'));
}
}