假设我有以下菜单结构:
<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 方法是什么。