Backbone:从视图类添加到路由器的路由

时间:2012-05-08 20:53:40

标签: javascript backbone.js

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

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

我怀疑你会说我可以为每个视图创建一个新的路由器......可能是它但我不愿意。

谢谢!

1 个答案:

答案 0 :(得分:2)

  

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

路由器的路由对象就是你传递给extends函数的哈希。

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

因此,当你使用Router.route()函数时,它不会修改路由器的路由散列,但它实际上会将路由添加到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/