ng-click和ng-class切换类

时间:2014-06-19 11:19:53

标签: angularjs

我尝试通过点击按钮将open类切换为nav元素。 下面的代码不会将open类分配给nav,也不会在未按下按钮时删除open

<nav class="slide-menu" ng-class="{'open': open, '': !open}">

<button class="slide-btn" ng-click="open=!open"></button>

我知道''这显然是错误的,因为它只是将文字指定为类。

1 个答案:

答案 0 :(得分:6)

尝试将ng-init添加到容器div:

<div ng-init="open=false">
    <nav class="slide-menu" ng-class="{'open': open}">
    <button class="slide-btn" ng-click="open=!open"></button>
</div>

或在您的范围内添加$scope.open = false;

上面代码中发生的情况是两个元素中的每一个都有自己的范围,其中包含open属性,因此您可以将它们包装在另一个元素中(具有它自己的范围) )并将open属性放在那里。因此,在navbutton的内部范围内,当它试图查找名为open的属性时,它会查看其自身的范围而无法找到它,所以它查看它的父范围(包装div)并在那里找到它。

您可以从此处了解有关角度范围继承的更多信息: https://github.com/angular/angular.js/wiki/Understanding-Scopes

- 此外,您不需要'': !open部分。