2014-11-19 1 views
3

Я знаю, что вы можете получить имя текущего имени маршрута с помощью Router.current().route.getName(), но как я могу получить имя текущего контроллера ??Iron Router: Получить имя текущего контроллера

Вот пример того, как я определяю мой контроллер (ы):

Router.configure 
    layoutTemplate: 'LayoutFluid' 
    yieldRegions: 
     "footer": {to: "footer"} 
     "header": {to: "header"} 


@QuantifyController = RouteController.extend 
    layoutTemplate: "LayoutSidebar" 
    yieldRegions: 
     "footer": {to: "footer"}  
     "header": {to: "header"} 
     "QuantifyMenu": {to: "sidebar"} 
    action: -> 
     @render() 

Router.map -> 
    @route "Home", 
     path: "/" 
    @route "Blog", 
     path: "/blog" 
    @route "QuantifyIndex", 
     path: "/quantify" 
     controller: "QuantifyController" 
    @route "QuantifyNewProject", 
     path: "/quantify/new" 
     controller: "QuantifyController" 
    @route "Quantify..." #you get the idea 

FWIW, причина мне нужно, чтобы получить это для целей CSS. Я добавляю имя маршрута как класс css в тело, а это означает, что при определении общих стилей для просмотров, которые используют QuantifyController, мне нужно сделать body.QuantifyIndex, body.QuantifyNewProject, body.Quantify..., что означает, что каждый раз, когда я добавляю новый маршрут Quantify.., мне нужно также добавить его в css, который просто не идеален. Если я могу получить имя контроллера, я могу просто использовать body.QuantifyController {...} в CSS, который намного более идеален.

+0

Попробуйте ** Router.current(). Route.controller **. –

+0

Как вы назовете ваш контроллер в первую очередь? Поставка такого имени, как вы для маршрута, не окажет никакого эффекта. – richsilv

+0

@SG_ 'Router.current(). Route.controller' возвращает' undefined' для меня. Может быть, мои маршруты определены неправильно? Все работает как шарм, хотя .. никаких ошибок нигде. –

ответ

3

Получил это! После нескольких часов поиска я нашел, что он определен по адресу:

Router.current().route.options.controller.

Обратите внимание, что если текущий контроллер является контроллером по умолчанию (RouteController), вы получите undefined.

@SG_ Ваш комментарий помог мне туда добраться. еще раз спасибо.