重定向到ArrayController中的第一项

时间:2013-03-14 04:06:04

标签: ember.js

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

耶胡达的一个特别答案here

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

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

我认为'我已经重新创建了这个场景,但我一定做错了......

非常感谢任何有关我所做错事的见解。

示例JSBin here

1 个答案:

答案 0 :(得分:1)

这里的问题是您的模型列表尚未从服务器加载。根据你的需要,我会建议使用promis来让溃败等待升级,直到你的模型被加载。

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

ofcourse .. wel会使重定向变得愚蠢,所以如果你只是想等待列表加载你可以尝试:

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