AngularUIのルーティングを使用していて、実行したいのng-class="{active: current.state}"
ですが、このようなディレクティブで現在の状態を正確に検出する方法がわかりません。
回答:
更新:
この答えは、Ui-Routerのはるかに古いリリースに対するものでした。最新のリリース(0.2.5以降)については、ヘルパーディレクティブを使用してくださいui-sref-active
。詳細はこちら。
元の回答:
コントローラに$ stateサービスを含めます。このサービスをスコープのプロパティに割り当てることができます。
例:
$scope.$state = $state;
次に、テンプレートの現在の状態を取得するには:
$state.current.name
状態が現在アクティブであるかどうかを確認するには:
$state.includes('stateName');
このメソッドは、ネストされた状態の一部であっても、状態が含まれている場合はtrueを返します。ネストされた状態にuser.details
あり、をチェックした場合$state.includes('user')
、trueが返されます。
クラスの例では、次のようにします。
ng-class="{active: $state.includes('stateName')}"