アプリケーションの状態に基づいて(AngularUIルーターを使用して)要素のクラスを条件付きで設定したいと思います。私はこれを試しましたが、機能していません:
<li ng-class="{active: $state.current.name === 'state1'}">State 1</li>
<li ng-class="{active: $state.current.name === 'state2'}">State 2</li>
何か案は?
それが機能しなかった理由は、@ charlietflが指摘したように、$ stateがスコープ内になかったためです。そこで、州のコントローラーに以下を追加しました。
$rootScope.$state = $state;
そしてそれはうまくいきました。 このプランカー は実用的な例です。
ui-sref-active
ディレクティブを使用することもできます。
ui-routerの状態が一致するときにクラスactive
を要素に追加するにはuse
ui-sref-active="active"
参照: http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.directive:ui-sref-active
あなたはこのようなことをすることができます:
<li ng-class="{active: $state.includes('state1')}">State 1</li>
<li ng-class="{active: $state.includes('state2')}">State 2</li>