重定向到ArrayController中的第一项

Rob*_*son 5 ember.js

我正在尝试重定向到ArrayController中的第一项.我发现了一些与此相关的其他问题,但没有一个问题似乎有效(很多变化都在发生,所以这是可以理解的).

从胡达一个特定的答案在这里:

App.DoctorsRoute = Ember.Route.extend({
  model: function() {
    return App.Doctor.find();
  },

  redirect: function() {
    var doctor = this.modelFor('doctors').get('firstObject');
    this.transitionTo('doctor', doctor);
  }
});
Run Code Online (Sandbox Code Playgroud)

我想'我已经重新创造了这个场景,但我一定做错了......

非常感谢任何洞察我做错的事情.

示例JSBin 在这里.

Bra*_*ram 1

这里的问题是您的模型列表尚未从服务器加载。根据您的需求,我建议使用承诺让路由稍等一下,直到您的模型加载。

App.DoctorsRoute = Ember.Route.extend({
  model: function() {
    return App.Doctor.find().then(function (list) {
       return list.get('firstObject');
    });
  },

  redirect: function() {
    var doctor = this.modelFor('doctors');
    this.transitionTo('doctor', doctor);
  }
});
Run Code Online (Sandbox Code Playgroud)

当然..这会让重定向有点愚蠢,所以如果你只是想等待列表加载,你可以尝试:

App.DoctorsRoute = Ember.Route.extend({
  model: function() {
    return App.Doctor.find();
  },

  redirect: function() {
    var self = this;
    this.modelFor('doctors').then(function (list) {
           return list.get('firstObject');
       }).then(function (doctor){
           if(!doctor)
              self.transitionTo('doctor', doctor);
       });
  }
});
Run Code Online (Sandbox Code Playgroud)