【问题标题】:Spinejs routing not saving stateSpinejs路由不保存状态
【发布时间】:2013-04-05 22:34:09
【问题描述】:

我正在尝试将状态添加到我的脊椎应用程序中。单击时,会将一个项目添加到列表中。然后创建一个 url 并导航到,然后呈现列表。但是,当我使用浏览器的“返回”功能时,列表不会变回以前的状态。如何让它发挥作用?

这是相关代码,我省略了似乎无关紧要的部分,但如果需要更多,我会提供。

class App extends Spine.Controller  
  constructor: ->
    super
    @products = new Products
    @filters = new Filters

    Filter.bind 'filterAdded', => @navigateAfterFilterChange()
    Filter.bind 'filterRemoved', => @navigateAfterFilterChange()

    Spine.Route.setup( history: false )

  renderAll: ->
    @products.render()
    @filters.render()

  navigateAfterFilterChange: ->
    Spine.Route.navigate( encodeURIComponent( JSON.stringify( _.map( Filter.active_filters, ( filter ) -> { t: filters.type, v: filters.value } ) ) ) )



class Filter extends Spine.Model
  listen: => #This is used to make the right list item listen to a click event
    $("'a[data-cid=\"#{ @id }\"]'").one 'click', @triggerFilter

  triggerFilter: (e) =>
    e.preventDefault()
    filter = Filter.find( $( e.currentTarget ).attr( 'data-cid' ) )
    if @active
      @active = false
      Filter.active_filters =  _.reject Filter.active_filters, (x) -> ( x.type is filter.type and x.value is filter.value )
      @save()
      Filter.trigger 'filterRemoved', @
    else
      @active = true
      Filter.active_filters.push filter
      @save()
      Filter.trigger 'filterAdded', @



class Filters extends Spine.Controller
  constructor: ->
    super
    @utils = new GeneralScripts
    @createFilters()
    @listenForTypeActivation()
    @routes
      "": ( params ) ->
        @render()
      "*glob": ( params ) ->
        @render()

【问题讨论】:

    标签: coffeescript history spine.js


    【解决方案1】:

    不确定,但看起来您可能需要使用 render() 发送参数

    class Filters extends Spine.Controller
      constructor: ->
        super
        @utils = new GeneralScripts
        @createFilters()
        @listenForTypeActivation()
        @routes
          "": ( params ) ->
            @render(params)
          "*glob": ( params ) ->
            @render(params)
    

    当然你还需要在渲染方法中处理参数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      • 2019-02-09
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 2020-11-18
      • 2016-02-29
      相关资源
      最近更新 更多