2016-08-16 15 views
0

Gibt es einen bestimmten Grund, warum mein Code nicht funktioniert?Angular - ng-Klasse basierend auf Zustand

<li ng-class="{active : $state.includes('products')}"> 

Router Code:

.state('products', { 
    url: '/products', 
    templateUrl: 'app/components/views/products/products.html', 
    controller: 'productsController', 
    controllerAs: 'products' 
}) 
+0

Sie Ihren Controller hinzufügen sollten. Im Controller haben Sie etwas wie: '$ scope. $ State = $ state;'? – Galhem

+0

Sind Sie sicher, dass Sie Ihren Namen korrekt referenzieren? Vielleicht fügen Sie Ihren Router-Code auf die Frage –

+0

@M B: Router Code auch hinzugefügt – Era

Antwort

2

Sie erhalten die $ state-Provider über die $ Injektor in Ihrem Controller erhalten müssen (wie Sie selbst $ scope oder ein Service injizieren würde .

EDIT:

Fügen Sie es als solche:

angular.module('yourModule', []).controller('YourController',['$injector', 
    funciton($injector){} 
]); 

Dann:

$scope.$state = $injector.get('$state'); 

Sie nun Zugriff auf $ Zustand haben. Um den Namen Ihres aktuellen Zustand zu erhalten, verwenden Sie einfach:

$state.current.name 

Beispiel:

<li ng-class="{active : $state.current.name === 'products'}"> 
Verwandte Themen