2014-10-07 123 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