我有一个使用日期参数来检索事件集合的ember路由。我正在使用deserialize函数来获取集合。提取集合后,网址从“/ 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 )
答案 0 :(得分:1)
当undefined
方法失败时,我已经看到命名路由变为serialize
,虽然这里没有足够的信息可以肯定,但我强烈怀疑是情况下。
我认为依靠路由器为你保存这样的信息是错误的。它不是设计为任意信息的存储库,只是为了保持您的应用程序状态。
我的建议是将日期范围信息移动到控制器中。因此,如果控制器是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()