web-dev-qa-db-ja.com

現在のルート名/コントローラーに基づいてクラスを設定する方法

現在のコントローラーまたは現在のルート(URLセグメント1)に基づいてクラスを設定しようとしています。

何かのようなもの

<body class="{{controllerName}}">

そうすれば、CSSの特定性のために別のページをターゲットにする必要がある場合に備えて、それが簡単になります。

28

私の解決策は次のとおりです:ルートスコープでルートの変更をサブスクライブし、コントローラーの名前をそこに入力します。

app.run(function($rootScope) {
   $rootScope.$on('$routeChangeSuccess', function(ev,data) {   
     if (data.$route && data.$route.controller)
       $rootScope.controller = data.$route.controller;
   })
});

チェック Plunker solution

33

$ route サービスを使用できます。現在のコントローラーを提供するcurrentプロパティがあります。

5
pavelgj

さらに簡単です。 controller引数には直接dataプロパティがあります。

$rootScope.$on("$routeChangeSuccess", function(e, data) {
    $rootScope.controller = data.controller;
});

私の知る限りでは、data引数は$route.currentと同じオブジェクトです。 controllerプロパティは、そのオブジェクトのプロトタイプにあります。

3
ivanreese

Angularのバージョン1.3では、次のコードを使用できます。

$rootScope.$on('$routeChangeSuccess', function (ev, data) {
    if (data.$$route && data.$$route.controller)
        $rootScope.controller = data.$$route.controller;
});
2
Kénium