次のメニュー構造があるとします。
<li class="dropdown"><img role="button" class="dropdown-toggle" data-toggle="dropdown" ng-src="{{avatarUrl}}" />
<ul class="dropdown-menu pull-right" role="menu">
<li ng-hide="user"><a ng-click="openLoginDialog()">Login</a></li>
<li ng-show="user"><a ng-click="logout()">Logout</a></li>
</ul>
</li>
正しいメニューが表示されますが、ng-show/ng-hide を使用しているためuser = false;
、コントローラーでプログラムによって変更すると、ログイン メニューが表示されます。なぜこれが起こっているのかはわかりますが、Angular を使用してそれを防ぐためにどのようなアプローチを取るべきかわかりません。私はng-repeatを試しました:
<li class="dropdown"><img role="button" class="dropdown-toggle" data-toggle="dropdown" ng-src="{{avatarUrl}}" />
<ul class="dropdown-menu pull-right" role="menu">
<li ng-repeat="action in actions"><a ng-click="{{action.command}}">{{action.name}}</li>
</ul>
</li>
と:
$scope.actions = [ {
name : "Login",
command : "openLoginDialog()"
}, {
name : "Logout",
command : "logout()"
} ];
しかし、その戦略では、メニュー項目をクリックしても何も起こりません。歩行者のユースケースであると確信しているものに対する適切なAngularアプローチが何であるかはわかりません。