【问题标题】:ember routing serialize and deserialize paramsember 路由序列化和反序列化参数
【发布时间】:2012-09-29 03:59:14
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    serialize 方法失败时,我看到命名路由更改为undefined,虽然这里没有足够的信息可以确定,但我强烈怀疑是这种情况。

    我认为依靠路由器为您保留这样的信息是错误的。它不是为了存储任意信息而设计的,只是为了保持您的应用程序状态。

    我的建议是将日期范围信息移到控制器中。所以如果控制器是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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-19
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      相关资源
      最近更新 更多