重定向到Ember数组中的第一个对象

时间:2014-03-21 22:57:18

标签: javascript redirect ember.js

我从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);
    }
});

1 个答案:

答案 0 :(得分:3)

redirect传递了两个参数,即模型和转换对象。转换具有属性targetName,您可以根据其值有条件地重定向。

redirect: function(model, transition){
  if(transition.targetName =='races.index'){
    this.transitionTo('race', model.get('firstObject'));
  }
}