我试图弄清楚是否有办法让我在骨干网中动态添加路由。我有根据特定用户的权限动态添加的视图。我希望能够让视图类在实例化时添加其路由,而不必在路由器中定义所有路由(我使用的是单个应用程序范围的路由器)。
我尝试使用骨干路由器文档中描述的路由方法,但是当我检查路由器的“路由”对象时,我没有看到添加的路由。
我怀疑你会说我可以为每个视图创建一个新的路由器......可能是这样,但我不想这样做。
谢谢!
我试图弄清楚是否有办法让我在骨干网中动态添加路由。我有根据特定用户的权限动态添加的视图。我希望能够让视图类在实例化时添加其路由,而不必在路由器中定义所有路由(我使用的是单个应用程序范围的路由器)。
我尝试使用骨干路由器文档中描述的路由方法,但是当我检查路由器的“路由”对象时,我没有看到添加的路由。
我怀疑你会说我可以为每个视图创建一个新的路由器......可能是这样,但我不想这样做。
谢谢!
我尝试使用骨干路由器文档中描述的路由方法,但是当我检查路由器的“路由”对象时,我没有看到添加的路由。
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/