Backbone.js 动态创建主干路由
这是我的主干路由器:Backbone.js 动态创建主干路由,backbone.js,backbone-routing,Backbone.js,Backbone Routing,这是我的主干路由器: var Router = Backbone.Router.extend({ routes: { "": "home", "home": "home", "about": "about", "works": "works", "work/:id" : "work", "news": "news", "contact": "contact" }, init
var Router = Backbone.Router.extend({
routes: {
"": "home",
"home": "home",
"about": "about",
"works": "works",
"work/:id" : "work",
"news": "news",
"contact": "contact"
},
initRoutes: function(e) {
this.on('route:home', function() {
page.activepage = "home";
page.render();
});
this.on('route:about', function() {
page.activepage = "about";
page.render();
});
this.on('route:works', function() {
page.activepage = "works";
page.render();
});
this.on('route:work', function(id) {
page.activepage = "works";
page.param = id;
page.render();
});
this.on('route:news', function() {
page.activepage = "news";
page.render();
});
this.on('route:contact', function() {
page.activepage = "contact";
page.render();
});
},
initialize: function(){
var self = this;
Backbone.history = Backbone.history || new Backbone.History({});
root = "kitchenV3/"+lang;
var enablePushState = true;
var pushState = !! (enablePushState && window.history && window.history.pushState);
Backbone.history.start({
pushState: pushState,
root: root
});
self.initRoutes();
}
});
因此,正如您所看到的,我的所有路由基本上都在做相同的事情(根据路由名称和参数呈现内容)。那么,如何重写、、this.on(route:about)……以避免递归?使用这些路由:
routes: {
'': 'myFunc',
':mod(/)': 'myFunc',
':mod/:id(/)': 'myFunc'
},
myFunc: function(mod, id) {
page.activepage = mod || 'home';
if(id) page.param = id;
page.render();
}
并删除initRoutes。这应该可以正常工作。邪恶!Tnx bro,这些天你真的帮了我的忙:)