如何从木偶控制器重定向到另一条路线?例如:
var controller = new MyAccountController({
myAccountView: new MyAccountView({
el: 'body'
})
});
var router = new MyAccountRouter({
controller: controller
});
在控制器方法中,根据我的知识,我无法访问路由器,我认为您需要从路由器访问navigate()方法才能导航。基本上我想做的是在某个地方进行客户端重定向,如果控制器方法中的某些条件不满足的话。
答案 0 :(得分:0)
我认为首选的方法是触发另一个对象可以侦听的事件。这是我要做的事情的一个小例子(未经测试)。
window.App = new Marionette.Application();
App.on('start', function() {
Backbone.history.start();
});
App.start();
var Router = Marionette.AppRouter.extend({
appRoutes: {
'': 'home'
}
});
var Controller = Marionette.Controller.extend({
home: function() {
App.trigger('someEvent');
}
});
var AnotherController = Marionette.Controller.extend({
doSomeOtherThing: function() {
alert('Hello world');
});
App.on('someEvent', function() {
doSomeOtherThing();
});
});
var controller = new Controller;
var anotherController = new AnotherController;
controller.router = new Router({
controller: controller
});
controller.start();
anotherController.start();
答案 1 :(得分:0)
您可以将Backbone历史记录对象用于此目的:
Backbone.history.navigate('/some/route', {
trigger: true
});
以上内容会将URL更新为/some/route
并强制路由器触发路由处理程序。