我正在尝试重定向到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。
答案 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);
});
}
});