【问题标题】:Backbone: Adding routes to router from view classes骨干网:从视图类添加路由到路由器
【发布时间】:2012-05-08 20:53:39
【问题描述】:

我想弄清楚是否有办法让我在骨干网中动态添加路由。我有根据特定用户的权限动态添加的视图。我希望能够让视图类在实例化时添加其路由,而不必在路由器中定义所有路由(我使用的是单个应用程序范围的路由器)。

我尝试使用骨干路由器文档中描述的路由方法,但是当我检查路由器的“路由”对象时,我没有看到添加的路由。

我怀疑你会说我可以为每个视图创建一个新路由器...可能是这样,但我不想这样做。

谢谢!

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

    我尝试使用骨干路由器文档中描述的路由方法,但是当我检查路由器的“路由”对象时,我没有看到添加的路由。

    Router 的 routes 对象只是您传递给 extends 函数的哈希值。

    实际路线被添加到 Backbone.history 对象中。

    所以,当你使用 Router.route() 函数时,它不会修改路由器的 Routes 哈希,但它实际上会将路由添加到 Backbone.history,它会按预期工作。

    Workspace = Backbone.Router.extend({
      routes: {
        "help":                 "help",    // #help
        "search/:query":        "search",  // #search/kiwis
        "search/:query/p:page": "search"   // #search/kiwis/p7
      },
      help: function() {
        console.log("help");       
      },
      search: function(query, page) {
        console.log("search",query,page);
      },
      new: function() {
        console.log("new");
      }
    });
    
    Main = Backbone.View.extend({
        tagName: 'div',
        initialize: function() {
            app.route('new','new');
        },
        render: function() {
          return this;   
        }
    });
    
    ​app = new Workspace();
    Backbone.history.start();
    main = new Main();
    app.navigate('new',{trigger:true});  //=> "new"
    

    现场示例:http://jsfiddle.net/edwardmsmith/XsDQu/4/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多