2016-08-16 25 views
0

私のコードが機能していない具体的な理由は何ですか?角度に基づく角度クラス

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

ルータコード:

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

を持っているあなたは、あなたのコントローラを追加する必要があります。 コントローラにあなたのようなものがあります: '$ scope。$ state = $ state;'? – Galhem

+0

あなたはあなたの州の名前を正しく参照していますか?多分あなたのルータコードを質問に追加してください。 –

+0

@M B:ルータコードも追加されました。 – Era

答えて

3

あなたはあなたがそうするならば、あなたが使用し続けることができ、あなたの$rootScope$state$stateParamsを設定し忘れていますhtmlでの最初のアプローチ:

このように、すべてのコントローラに注入する必要はありません。 https://github.com/angular-ui/ui-router/wiki/quick-reference#note-about-using-state-within-a-template

PS:ここ

が参照され、私は個人的にグローバルなアプローチのこの種のはお勧めしませんが、それはそのメリット

2

あなたが自分で$スコープを注入と同じように、あなたが(あなたのコントローラで$インジェクタ経由$状態プロバイダを取得する必要がありますかサービス

編集: は、次のようなことを含める:次に

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

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

あなたは今$状態へのアクセス権を持っています。あなたの現在の状態の名前を取得するには、単に使用します。

$state.current.name 

例:

<li ng-class="{active : $state.current.name === 'products'}"> 
関連する問題