根据标志动态创建 backbone 路由

Creating backbone routes dynamically based on flags

我正在尝试为用户动态创建 backbone 路由,前提是登录用户有权查看该特定 route.In 我当前的实现已创建路由并调用相应的路由功能,在该功能中我将检查用户是否具有所需的权限,如果没有重新路由到默认页面。我可以根据条件自己创建路由,这样我就不必每次都检查用户是否具有适当的权限。

var Workspace = Backbone.Router.extend({
  routes: { 
    "help":                 "help",    
    "search/:query":        "search",  
    "search/:query/p:page": "search",
    "default":  "default"  
  },

  help: function() {
    if(!permission1){
      router.navigate('default', true);
    }
    //write logic
  },

  search: function(query, page) {
    if(!permission2){
      router.navigate('default', true);
    }
    //write logic
  },

 //write logic for other routes

});

阅读backbonejs文档后想到的问题解决方法如下:

var GlobalRouter = Backbone.Router.extend({
initialize: function () {
    this.route('*path','default',showDefault);
    if (permission1) {
        this.route('menu1', 'menu1', showMenu1);
    }
    if (permission2) {
        this.route('menu2', 'menu2', renderMenu2);
    }
    if (permission3) {
        this.route('menu3', 'menu3', renderMenu3);
    }
}
});

这样创建路由意味着如果用户没有权限查看某个路由,则无需再次检查权限,因为路由不会发生,因为它从未创建。