2015-04-16 1 views
0

У меня есть маршрутизатор следующим образом -Позвоните в Marionette onRoute на контроллере?

var Router = Backbone.Marionette.AppRouter.extend({ 

    appRoutes: { 
     'test': 'test' 
    }, 

    onRoute: function(name, path) { 
     // this route is being called. This works 
     console.log("on route called", name, path); 
    } 
}); 

И мой routerController выглядит следующим образом -

var RouterController = Marionette.Controller.extend({ 
    test: function() { 
     console.log("test route called"); 
    }, 

    onRoute: function(name, path) { 
    // This onRoute is not being called. 
    } 
}); 

Как я могу назвать onRoute на контроллере, а не маршрут? Я хочу вызвать onRoute на контроллере, так как все мои функции маршрута вызываются на контроллере.

+1

Не можете ли вы просто использовать свойство 'controller' на маршрутизаторе и вызвать его через' this.controller'? – ivarni

+0

oops пропустил это * facepalm * – Ajey

ответ

0

Вы можете получить доступ к контроллеру через параметры объекта, переданного в маршрутизатор:

var Router = Backbone.Marionette.AppRouter.extend({ 

    appRoutes: { 
     'test': 'test' 
    }, 

    onRoute: function(name, path, arguments) { 
     if (_.isFunction(this.options.controller.onRoute)) { 
       this.options.controller.onRoute(name, path, arguments); 
      } 
    } 
}); 

Имейте в виду, что это будет вызывать onRoute функцию контроллера каждый раз, когда маршрут срабатывает.