我正在尝试重定向到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 在这里.
这里的问题是您的模型列表尚未从服务器加载。根据您的需求,我建议使用承诺让路由稍等一下,直到您的模型加载。
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)
| 归档时间: |
|
| 查看次数: |
562 次 |
| 最近记录: |