2012-02-12 77 views
5

切換視圖我在尋找使用Backbone.js的與骨幹

切換視圖的最佳模式

比方說,我有一個基本的DOM結構是這樣的:

<div id="header">Some fixed content</div> 
<div id="mainContainer"></div> 
<div id="footer">Some other content</div> 

而且我有兩個意見「 viewOne「和」viewTwo「,我想在mainContainer中另外顯示。

路由器應該是這樣的:

routes: { 
    'one': 'pageOne', 
    'two': 'pageTwo' 
},  
pageOne: function() { 
    viewOne.render(); 
}, 
pageTwo: function(){ 
    viewTwo.render(); 
} 

我應該在哪裏添加或刪除view.el到DOM? 在視圖之間切換的最佳模式是什麼?

回答

6

我將使用更高級別的視圖(附加到#maincontainer),將負責呈現其子視圖。從你所描述的內容來看,你的觀點太不同了,根據某些條件考慮使用單一視圖渲染它們,而且我認爲它總是更清晰,具有層次結構樹視圖,因此渲染整個頁面基本上是調用頂層視圖,級別視圖的.render()(代表孩子)。

您的maincontainer級別的視圖可能會暴露兩個函數,比如renderPageOne和renderPageTwo,這就是路由器必須知道的所有內容。在這些函數中,可以跟蹤要呈現的子視圖,並調用this.render(),它清除當前內容(在maincontainer el上使用jQuery的.empty()),並插入正確的子視圖的頂層元素( .el)。

+3

我同意此答案的想法,但我不會爲此使用Backbone View。我寫了一篇文章解釋我如何使用「區域管理器」來處理這個問題http://lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/ – 2012-02-12 18:57:21

+0

@Derick :有趣的概念。類似於我對更高層次的觀點所做的事情,儘管確實不一定是觀點。您博客上的許多其他有趣的Backbone帖子! – mna 2012-02-13 00:40:05