1

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

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

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

谢谢!

4

1 回答 1

2

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

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/

于 2012-05-08T21:24:07.267 回答