2011-05-21 43 views
2

如果我創建了一個具有3種不同「狀態」的標準Web應用程序:索引,視圖,編輯,我會創建一個具有3種不同路由的控制器嗎?控制器在Backbone.js中的作用

假設索引有4個與其關聯的Backbone.Views並且編輯爲3.如果從索引導航到編輯:是通過簡單地移除所有索引Backbone.Views並渲染編輯?這似乎有很多工作 - 在模式間移動時切換「display:none」是否明智?如果這樣的話,該功能是否在控制器的功能範圍內?

例如,下面是一個有效的方法嗎?

window.MyController = Backbone.Controller.extend({ 
    routes: { 
    '#index':index, 
    '#view/:id':view, 
    '#edit/:id':edit 
    }, 

    switchState: function(state){ 
    hideStates(); 
    showState(state); 
    }, 

    index: function(){ 
    switchState(index) 
    }, 

    view: function(id){ 
    switchState('view') 
    }, 

    edit: function(id){ 
    switchState('edit') 
    } 
}) 

回答

2

這正是你應該做的。重新渲染是一個壞主意,因爲你必須記住狀態(即,用戶在編輯選項卡中將某些內容輸入到字段中,然後切換到索引 - 當他回來編輯時,該字段將是空的)。基於導航隱藏&顯示適當的圖層也更快。