ember routing序列化和反序列化params

时间:2012-10-08 21:12:23

标签: ember.js coffeescript ember-old-router

我有一个使用日期参数来检索事件集合的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 )

1 个答案:

答案 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()