1

我有一个使用日期参数来检索事件集合的 ember 路由。我正在使用反序列化函数来获取集合。获取集合后,url 从“/day/2012-10-08”变为“/day/undefined”。

这些事件包括一系列日期,因此我不能使用数据来序列化日期参数。相反,我应该能够返回 url 上的参数。我下面的示例在反序列化时在路由器“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 )
4

1 回答 1

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()
于 2012-12-13T03:55:41.453 回答