我想要一个Ember path /clinic/1
自动重定向到显示第一个医生:/clinic/1/doctor/1
。
每个诊所都有很多医生。
不幸的是,如果我使用以下代码:
var doctor = clinicController.get('content.doctors.firstObject');
router.transitionTo('clinic.doctor.index', doctor);
..。它不起作用,因为当这段代码在app_router.js
中运行时,content.doctors.length
仍然是0
。
有什么想法吗?
发布于 2013-07-05 19:16:32
在我的基于ember数据的应用程序中,路由上的重定向对我不起作用,因为数据不是在重定向点加载的,但这对我来说是有效的……
在角色控制器中,我转换到加载的firstObject的角色路由。
Application.RolesController = Ember.ArrayController.extend({
selectFirstObject: function () {
if (this.get('content').get('isLoaded')) {
var role = this.get('firstObject');
this.transitionToRoute('role', role);
}
}.observes('content.isLoaded')
});
HTH,gerry
发布于 2014-03-22 07:39:37
作为更新,如果您不想重定向,因为您有一个嵌套的路由,您将希望使用基于预期路由的条件重定向。
redirect
有两个传递给它的参数,模型和转换对象。该转换具有属性targetName
,您可以根据其值有条件地进行重定向。
redirect: function(model, transition){
if(transition.targetName ==='doctors.index'){
this.transitionTo('doctor', model.get('firstObject'));
}
}
发布于 2015-08-29 22:16:45
对于EmberCLI用户,您可以通过执行以下操作来实现相同的目的:
//app/routes/clinics/show.js
import Ember from 'ember';
export default Ember.Route.extend({
redirect: function(model) {
var firstDoctor = model.get('doctors.firstObject');
this.transitionTo('doctor', firstDoctor);
}
});
https://stackoverflow.com/questions/14305255
复制相似问题