2013-04-13 27 views
1

我想讓狀態進入我的脊柱應用程序。點擊後,一個項目被添加到列表中。然後創建一個url並導航到,然後列表get被渲染。但是,當我使用瀏覽器「返回」功能時,列表不會變回以前的狀態。如何讓這個工作?Spinejs路由不保存狀態

這是相關的代碼,我忽略了什麼似乎不相關,但如果需要更多,我會提供它。

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

回答

0

不知道,但看起來你可能需要發送PARAMS與渲染()

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

你還需要在處理過程中

的渲染方法PARAMS