如何从木偶控制器重定向到另一条路线?

时间:2015-02-24 01:57:46

标签: javascript backbone.js marionette backbone-routing

如何从木偶控制器重定向到另一条路线?例如:

var controller = new MyAccountController({
    myAccountView: new MyAccountView({
        el: 'body'
    })
});

var router = new MyAccountRouter({
    controller: controller
});

在控制器方法中,根据我的知识,我无法访问路由器,我认为您需要从路由器访问navigate()方法才能导航。基本上我想做的是在某个地方进行客户端重定向,如果控制器方法中的某些条件不满足的话。

2 个答案:

答案 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并强制路由器触发路由处理程序。