我尝试通过点击按钮将open
类切换为nav
元素。
下面的代码不会将open
类分配给nav
,也不会在未按下按钮时删除open
。
<nav class="slide-menu" ng-class="{'open': open, '': !open}">
<button class="slide-btn" ng-click="open=!open"></button>
我知道''
这显然是错误的,因为它只是将文字指定为类。
答案 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
属性放在那里。因此,在nav
和button
的内部范围内,当它试图查找名为open
的属性时,它会查看其自身的范围而无法找到它,所以它查看它的父范围(包装div)并在那里找到它。
您可以从此处了解有关角度范围继承的更多信息: https://github.com/angular/angular.js/wiki/Understanding-Scopes
- 此外,您不需要'': !open
部分。