我必须在" / b"上提供我的骨干应用程序。路线和我的路由器挂钩有困难。如果我只是showView一个视图,它工作正常,但当我挂钩我的路由器,我的路由控制器功能没有触发,任何想法?
路由器:
define('appRouter', ['marionette', 'rootView', 'changePasswordView'], function(Marionette, rootView, changePasswordView) {
return Marionette.AppRouter.extend({
routes: {
'/b/change-password': 'showChangePassword',
'/b': 'showAccountSettings'
},
showChangePassword: function() {
this.showView(new changePasswordView());
},
showAccountSettings: function() {
this.showView(new rootView());
}
});
});
申请onStart(已确认解雇):
var Application = Marionette.Application.extend({
...
onStart: function(options) {
console.log('on start');
var router = new appRouter(options);
/** Starts the URL handling framework */
if( ! Backbone.History.started) Backbone.history.start();
router.initialize();
},
...
});
当我访问http://localhost:8080/b
时(我的索引用于所有密集目的),它会呈现一个空白页。
答案 0 :(得分:1)
Backbone中的默认路由为hash-based。指向您的/b
路线的链接应与http://localhost:8080/#/b
类似。
如果您不需要基于哈希的链接,请使用pushState: true
启动历史记录。
Backbone.history.start({pushState: true});
修改强>
如果您在/b
路径上投放应用,那么您的定义路线错误。必须相对于/b
:
routes: {
'change-password': 'showChangePassword',
'': 'showAccountSettings'
},
并访问:
http://localhost:8080/b' -
showAccountSettings` http://localhost:8080/b#change-password' -
showChangePassword`