2013-02-23 75 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")