2014-10-07 125 views
2

我想列出具有某个应用的人员的约会。我已经定义了像我的路线:如何获取Ember中的子路由的路由参数

this.resource('person', { path: "person/:personid/" }, function() { 
    this.route('appointments', { path: "appointments/:date" }); 
}); 

现在我有2个模板

  1. 人 - 模板:显示人的名字在上面,然后{{口}}

  2. 约会 - 模板:有一个落后的日期和前进按钮来浏览日期和约会

约会的控制器通过

controller.transitionToRoute("person.appointments",mydatevar) 

这也重新呈现按钮处理通过日期导航,因为它在同一条路线。我不喜欢那样。

我尝试了不同的方法,但总是当我从预约列表中分离导航时,我需要以某种方式处理两个控制器或路径中的日期。

导航需要知道约会路线的“子路线”参数的状态。我认为这是完全错误的。

我很困惑,现在:-(

任何人可以帮助我吗?

回答

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); 
    ... 
    } 
}); 
+0

这(两者)是绝对有意义的! Thx,我现在不在办公室,我明天会检查一下! – Weissvonnix 2014-10-07 15:00:13