【问题标题】:Creating backbone routes dynamically based on flags基于标志动态创建骨干路由
【发布时间】:2019-04-01 17:08:32
【问题描述】:

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

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

});

【问题讨论】:

  • 如果用户有权限,你可以异步加载带有额外路由的文件
  • 你能解释一下吗,我不明白答案。谢谢
  • 我的意思是你可以使用 requirejs 之类的模块加载器并执行if(permission){ require('module-with-extra-routes');}; 之类的操作
  • 我将不得不尝试一下它是否可以工作,但目前我已经通过使用backbone.js本身的this.route()手动创建路由来实现它。跨度>

标签: backbone.js routes


【解决方案1】:

我在阅读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);
    }
}
});

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

【讨论】:

  • “阅读主干文档”,这是找到解决开发问题的关键点。恭喜您这样做,成功并回来分享您的解决方案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多