Backbone.js动态多级路由
Backbone.js dynamic multilevel routes
我想创建多级动态路由,如:-
http://localhost:4300/home/somename/somename/somename..... and so on based on dynamic inner pages
我的根配置如下:-
liveORCKlass.routers.Router = Backbone.Router.extend({
routes: {
'': 'home',
'home': 'home',
'home?files=:foo': 'home',
},
initialize: function () {
},
home: function () {
}
});
如何定义动态多级内页的根,请提前帮助我,谢谢。
尝试类似的路由器。如果需要,我们可以使用requires,只加载需要渲染的页面。您只需要遵循URL模式,如#pageId/param1=value1;param2=value2;param3=value3。这允许您添加更多参数并扩展应用程序。你还可以观察到,只有当pageId改变时,页面才会重新呈现,否则它只是更新页面模型的属性,你可以在页面视图中侦听和处理它们。
var pageRootEl = $('.page-container');
var currentPage ;
var currentPageId = defaultPage;
var defaultPage = 'page1';
var paramsToObject = function(params) {
if (!params) {
return {};
}
var paramsArray = _.map(params.split(';'), function(str) {
return str.split('=');
});
var obj = {};
_.each(paramsArray, function(arr) {
obj[arr[0]] = arr[1];
});
return obj;
};
var Router = Backbone.Router.extend({
routes: {
':pageId': 'renderPage',
':pageId/*params': 'renderPage',
'':'renderDefaultPage',
},
renderPage: function (pageId, params) {
var paramsObject = paramsToObject(params);
if(currentPageId === pageId && currentPage){
currentPage.model.set(paramsObject);
return;
}
if(currentPage){
currentPage.remove();
}
pageRootEl.empty();
switch (pageId) {
case 'page1':
$.getScript('pages/' + pageId + ".js", function () {
currentPage = new Page1.View({
});
currentPage.render().$el.appendTo(pageRootEl);
})
break;
case 'page2':
$.getScript('pages/' + pageId + ".js", function () {
currentPage = new Page2.View({
});
currentPage.render().$el.appendTo(pageRootEl);
})
break;
case 'page3':
$.getScript('pages/' + pageId + ".js", function () {
currentPage = new Page3.View({
});
currentPage.render().$el.appendTo(pageRootEl);
})
break;
}
},
renderDefaultPage: function(){
this.renderPage(defaultPage);
}
})
var router = new Router();
Backbone.history.start({
root: this.root
});
相关文章:
- Emberjs应用程序加载在除Index之外的所有路由上
- 正在使用$location.path(.)路由ng视图
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 多级HTML表单
- 未激发路由的控制器属性上的观察者
- AngularJS ui路由器html5模式中断路由
- 发送json对象或使用express路由呈现视图
- 使用主干网和rails的静态页面路由
- 如何使用Passport保护路由终结点
- 有没有办法用routerLink/router.navigation附加查询/路由参数
- Nodejs和express路由,如何处理客户端的承诺
- 使用PHP,我如何将JSON blob附加到现有的多级JSON对象
- TinyMCE实例在切换角度路由选项时会消失
- 什么'在Express中路由时,应用程序级中间件和路由器级中间件之间的区别是什么
- 使用Ampersand.js路由模块化应用程序
- Angular 2路由已弃用:如何检测CanActivate
- 格式化获取请求的路由
- Backbone.js动态多级路由
- Angular2:将多级对象作为路由参数传递
- angular2同一路由器出口的多级子路由