基于标志动态创建 Backbone 路由

hgc7kmma  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(95)

我尝试为用户动态创建 Backbone.js 路由,前提是登录用户具有查看该特定路由的权限。在我当前的实现中,我创建了路由并调用了相应的路由函数,在该函数中,我将检查用户是否具有所需的权限。如果没有重新路由到默认页面。我可以创建路由本身的基础上的条件,使我不必每次检查用户是否有适当的权限。

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

});
qybjjes1

qybjjes11#

我在阅读了backbone js文档后想出的问题的解决方案如下:

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

以这种方式创建路由意味着,如果用户没有查看特定路由的权限,则无需再次检查权限,因为路由不会发生,因为它从未创建。

相关问题