Angular ng-click 切换并关闭
Angular ng-click toggle and close
作为一个普通的 angular 新手,我花了好几个小时试图找到我的问题的答案。我终于放弃了,我想问问更有知识的人可能会更好,所以就这样吧。
我有多个选项卡应该下拉一个容器。最初什么都没有打开。单击时会打开一个下拉菜单,再次单击时它应该会关闭。此外,当单击另一个按钮时,当前打开的容器也应关闭。
这是我当前的代码:
<div ng-init="item = 0">
<div class="dropdon" ng-show="item == 1">
</div>
<div class="dropdon" ng-show="item == 2">
</div>
</div>
<ul class="nav">
<li>
<div class="btn" href="#" ng-click="item = 1"
ng-class="{ active:item == 1 }"><span>Nr1</span></div>
</li>
<li>
<div class="btn" href="#" ng-click="item = 2"
ng-class="{ active:item == 2}"><span>Nr2</span></div>
</li>
目前,当您第一次单击某个内容时它会很好地打开,并且还会在两个打开之间切换,但再次单击打开的 tba 时它不会关闭。我也知道所有这些逻辑都应该在控制器中,但目前我在这方面还是个新手,如果有人能帮我解决这个问题,我将不胜感激。
试试这个,
<div>
<div class="dropdon" ng-show="firstitem">
</div>
<div class="dropdon" ng-show="seconditem">
</div>
</div>
<ul class="nav">
<li>
<div class="btn" href="#" ng-click="firstitem = !firstitem;seconditem=false"
ng-class="{ active:item == 1 }"><span>Nr1</span></div>
</li>
<li>
<div class="btn" href="#" ng-click="seconditem = !seconditem;firstitem=false"
ng-class="{ active:item == 2}"><span>Nr2</span></div>
</li>
你需要这样的东西
$scope.item = 0;
$scope.toggle = function(itemPos) {
if ($scope.item === itemPos) {
$scope.item = 0;
}
else {
$scope.item = itemPos;
}
}
并且在HTML
<div>
<div class="dropdon" ng-show="item === 1"></div>
<div class="dropdon" ng-show="item === 2"></div>
</div>
<ul class="nav">
<li>
<div class="btn" ng-click="toggle(1)" ng-class="{ active:item === 1 }"><span>Nr1</span></div>
</li>
<li>
<div class="btn" ng-click="toggle(2)" ng-class="{ active:item === 2}"><span>Nr2</span></div>
</li>
</ul>
参见plnkr
作为一个普通的 angular 新手,我花了好几个小时试图找到我的问题的答案。我终于放弃了,我想问问更有知识的人可能会更好,所以就这样吧。
我有多个选项卡应该下拉一个容器。最初什么都没有打开。单击时会打开一个下拉菜单,再次单击时它应该会关闭。此外,当单击另一个按钮时,当前打开的容器也应关闭。
这是我当前的代码:
<div ng-init="item = 0">
<div class="dropdon" ng-show="item == 1">
</div>
<div class="dropdon" ng-show="item == 2">
</div>
</div>
<ul class="nav">
<li>
<div class="btn" href="#" ng-click="item = 1"
ng-class="{ active:item == 1 }"><span>Nr1</span></div>
</li>
<li>
<div class="btn" href="#" ng-click="item = 2"
ng-class="{ active:item == 2}"><span>Nr2</span></div>
</li>
目前,当您第一次单击某个内容时它会很好地打开,并且还会在两个打开之间切换,但再次单击打开的 tba 时它不会关闭。我也知道所有这些逻辑都应该在控制器中,但目前我在这方面还是个新手,如果有人能帮我解决这个问题,我将不胜感激。
试试这个,
<div>
<div class="dropdon" ng-show="firstitem">
</div>
<div class="dropdon" ng-show="seconditem">
</div>
</div>
<ul class="nav">
<li>
<div class="btn" href="#" ng-click="firstitem = !firstitem;seconditem=false"
ng-class="{ active:item == 1 }"><span>Nr1</span></div>
</li>
<li>
<div class="btn" href="#" ng-click="seconditem = !seconditem;firstitem=false"
ng-class="{ active:item == 2}"><span>Nr2</span></div>
</li>
你需要这样的东西
$scope.item = 0;
$scope.toggle = function(itemPos) {
if ($scope.item === itemPos) {
$scope.item = 0;
}
else {
$scope.item = itemPos;
}
}
并且在HTML
<div>
<div class="dropdon" ng-show="item === 1"></div>
<div class="dropdon" ng-show="item === 2"></div>
</div>
<ul class="nav">
<li>
<div class="btn" ng-click="toggle(1)" ng-class="{ active:item === 1 }"><span>Nr1</span></div>
</li>
<li>
<div class="btn" ng-click="toggle(2)" ng-class="{ active:item === 2}"><span>Nr2</span></div>
</li>
</ul>
参见plnkr