2012-10-08 72 views
1

我有一個使用日期參數檢索事件集合的燼路由。我正在使用反序列化函數來獲取集合。獲取集合後,url會從「/ day/2012-10-08」更改爲「/ day/undefined」。燼路由序列化和反序列化參數

事件包含一系列日期,因此我無法使用數據序列化日期參數。相反,我應該能夠返回網址上的參數。我的下面的例子在deserialize上的路由器「current_params」上設置一個屬性,並在serialize上返回它。我想知道是否有訪問序列化方法中的參數。

 day: Ember.Route.extend 
     route: "/day/:date" 

     deserialize: (router, params) -> 
      router.set('current_params', params) 
      router.get('store').findQuery(App.Event, { date: params.date }) 


     serialize: (router, context) -> 
      router.get('current_params') 

     connectOutlets: (router, context) -> 
      router.get('applicationController').connectOutlet('timecard', context) 

回答

1

我見過的命名路由得到改變,以undefinedserialize方法不靈了,雖然這裏沒有足夠的信息可以肯定的,我會強烈懷疑是這種情況。

我認爲依靠路由器爲您保存一條信息是一個錯誤。它不是爲任意信息的存儲庫而設計的,只是爲了保持您的應用程序狀態。

我的建議是將日期範圍信息移動到控制器中。因此,如果控制器TimecardController然後

TimecardController = Ember.ObjectController.extend 
    #other controller stuff 
    #more controller stuff 

    event_date: new Date 

然後在你的路由器

deserialize: (router, param) -> 
    @get('timecardController').set 'event_date', params.date 
    @get('store').findQuery App.Event, {date: params.date} 
serialize: (router, context) -> 
    date = @get('timecardController.event_date') 
    #or on older ember builds @getPath('timecardController.event_date') 
    '' + date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate()