控制器在Backbone.js中的角色

控制器在Backbone.js中的角色,backbone.js,Backbone.js,如果我创建了一个具有3种不同“状态”的标准webapp:索引、查看、编辑,我会创建一个具有3种不同路由的控制器吗 假设索引有4个主干。与之关联的视图和编辑有3个。如果从索引导航到编辑:只需删除所有索引主干视图并呈现编辑视图就可以更改页面外观,这是标准做法吗?这似乎需要做很多工作——在模式之间切换时,切换“显示:无”是否明智?如果是,该功能是否在控制器的功能范围内 例如,以下是一种有效的方法吗 window.MyController = Backbone.Controller.extend({

如果我创建了一个具有3种不同“状态”的标准webapp:索引、查看、编辑,我会创建一个具有3种不同路由的控制器吗

假设索引有4个主干。与之关联的视图和编辑有3个。如果从索引导航到编辑:只需删除所有索引主干视图并呈现编辑视图就可以更改页面外观,这是标准做法吗?这似乎需要做很多工作——在模式之间切换时,切换“显示:无”是否明智?如果是,该功能是否在控制器的功能范围内

例如,以下是一种有效的方法吗

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')
  }
})

这正是你应该做的。重新渲染是个坏主意,因为您必须记住状态(即,用户在“编辑”选项卡的字段中键入内容,然后切换到“索引”-当他返回编辑时,字段将为空)。将导航建立在隐藏和显示适当层的基础上也会更快