我想列出使用ember应用程序的人员约会。我的路线定义如下:
this.resource('person', { path: "person/:personid/" }, function () {
this.route('appointments', { path: "appointments/:date" });
});
现在我有2个模板
person - 模板:在顶部显示此人的姓名,然后{{outlet}}
约会 - 模板:有一个向后,日期和转发按钮,用于浏览日期以及列出的约会
约会控制人通过
处理日期导航controller.transitionToRoute("person.appointments",mydatevar)
这也是按钮,因为它在同一条路线上。我不喜欢那样。
我尝试了不同的方法,但总是当我将导航与约会列表分开时,我需要以某种方式处理两个控制器或路径中的日期。
导航需要知道约会路线的"子路由" - 参数的状态。我认为这是完全错误的。
我现在很困惑: - (
任何人都可以帮助我吗?
答案 0 :(得分:0)
有两种方法。
1. needs: http://emberjs.com/guides/controllers/dependencies-between-controllers/
2. send: http://emberjs.com/api/classes/Ember.Route.html#method_send
您可以在约会控制器上设置日期并使用needs
以便将数据共享回person
控制器。这样,您可以在人员控制器上拥有约会日期的别名。
App.PersonController = Em.ObjectController.extend({
needs: 'appointments',
date: Ember.computed.alias('controllers.appointments.date') // whatever the date property is
});
您可以向父路线发送操作,通知它日期已更改。
App.PersonRoute = Em.Route.extend({
actions: {
dateChanged: function(newDate){
this.controller.set('date', newDate);
}
}
});
App.AppointmentsRoute = Em.Route.extend({
model: function(params){
this.send('dateChanged', params.date);
...
}
});