2013-02-23 119 views
0

對可能制定的標題不甚理想抱歉。骨幹新手。骨幹路線和查看狀態

我遇到了麻煩如何處理與視圖相關的路線。基本上我有一個視圖(我們稱之爲ListView),根據其viewMode,使用不同的模板呈現ItemViews。它看起來是這樣的:

var ListView = Backbone.View.extend({ 

    // Cache a bunch of templates here 

    viewMode: 'list', // Default is list 

    render: function() { 

     switch(this.viewMode) { 
      case 'list': 
       // Render ItemView based on list template 
       break; 

      case 'gallery': 
       // Render ItemView based on gallery template 
       break; 

     } 

     // Render all items in list 
     this.collection.each(function(model, index) { 
      new ItemView(); // Maybe pass viewMode as a parameter 
     }); 

    } 

}); 

我的目標是,每當ListView使用viewMode「名單」或「畫廊」,這應該反映在地址欄,同樣手動輸入或點擊,導致鏈接例如mysite.com/page.html#items/list#items/gallery應呈現相同的結果。

有沒有辦法讓這個過程自動化,或以其他方式解決它?

+0

怎麼獲取用戶到顯示列表/畫廊,不通過路由器去該視圖的狀態? – WiredPrairie 2013-02-23 21:03:10

+0

目前列表視圖只是在AppView中呈現。我慢慢地得出結論,這可能根本不可取。 – jlowgren 2013-02-23 21:07:11

回答

1

想想你的路由器會是這樣的:

var yourRouter = Backbone.Router.extend({ 

    routes: { 
     "items/list": "showList", 
     "items/gallery": "showGallery" 
    }, 


    showList: function() { 
     listView.viewMode = "list" 
     listView.render(); 
    } 

    showGallery: function() { 
     listView.viewMode = "gallery" 
     listView.render(); 
    } 

}); 

您認爲這些事件,你可以打電話給你的路由器的navigate方法。這將更新地址欄。

yourRouter.navigate("items/list")