Marionette 路由器的非索引根路径
Non index root path with Marionette router
我必须在“/b”路由上提供我的 backbone 应用程序,但无法连接到我的路由器。如果我只是 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
(出于所有密集目的我的索引)时,它呈现一个空白页面。
Backbone 中的默认路由是 hash-based。 Link 到您的 /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`
我必须在“/b”路由上提供我的 backbone 应用程序,但无法连接到我的路由器。如果我只是 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
(出于所有密集目的我的索引)时,它呈现一个空白页面。
Backbone 中的默认路由是 hash-based。 Link 到您的 /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`