2015-02-24 43 views
0

如何從一個Marionette控制器重定向到另一個路由?例如:如何從一個Marionette控制器重定向到另一個路由?

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

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

從控制器的方法中,我沒有對路由器的訪問,據我所知,我想你需要從路由器訪問導航()方法,以導航。基本上我想要做的是如果某個控制器方法中的某些條件不符合,客戶端重定向到某處。

回答

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(); 
0

可以使用骨幹歷史對象用於此目的:

Backbone.history.navigate('/some/route', { 
    trigger: true 
}); 

以上將更新網址/some/route和強制路由器觸發路由處理。

相關問題