web-dev-qa-db-fra.com

Comment définir la classe en fonction du nom / contrôleur de route actuel

Essayer de définir une classe en fonction de mon contrôleur actuel ou de mon itinéraire actuel (segment d'URL 1).

quelque chose comme

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

De cette façon, au cas où je devrais cibler des pages distinctes pour la spécificité CSS, cela facilite les choses.

28

Ma solution serait: abonnez-vous aux changements de route à la portée de la route et mettez le nom du contrôleur là:

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

Vérifiez solution Plunker

33
Valentyn Shybanov

Vous pouvez utiliser le service $ route , il a la propriété current qui vous donnera le contrôleur actuel.

5
pavelgj

Encore plus simple. Il y a une propriété controller directement sur l'argument data.

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

Autant que je sache, l'argument data est le même objet que $route.current. La propriété controller se trouve dans le prototype de cet objet.

3
ivanreese

Pour la version 1.3 d'Angular, vous pouvez utiliser ce morceau de code:

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