ng-click - 隐藏ng-repeat中不是$ index的所有其他div

时间:2017-05-04 09:01:37

标签: angularjs angularjs-ng-repeat ng-show ng-hide

我想要做的是与手风琴相似。

简单的说 我有一个带有<a>标签的ng-repeat,一旦点击,就会在 ng-show 中嵌入一个名为“Printpanel”的div。

如果用户点击另一个<a>标签,我想要隐藏之前显示的所有其他div,并且只打开那个相关的div。

我使用$ index来触发特定的div。

我在这里做了什么:

 <div ng-repeat="product in $ctrl.Products">
    <a href="#" ng-click="showDetails = $index;>CONFIGURE</a>


 <div class="Printpanel ng-hide" ng-show="showDetails == $index" ng-hide="showDetails != $index">
 </div>

似乎无法识别ng-hide ......有人有想法吗?

3 个答案:

答案 0 :(得分:1)

您无需使用ngShow + ngHide:一个就足够了。

 <div class="Printpanel ng-hide" ng-show="showDetails == $index">

答案 1 :(得分:0)

您也可以使用ng-if

<div class="Printpanel" ng-if="showDetails == $index">

编辑:

由于范围继承问题,您无法设置showDetails变量。请使用$parent

工作示例:

<div ng-repeat="product in $ctrl.Products">
    <a href="#" ng-click="$parent.showDetails = $index">CONFIGURE</a>
    <div class="Printpanel" ng-if="$parent.showDetails == $index"> </div>
</div>

答案 2 :(得分:0)

似乎你错过了在这里关闭双引号ng-click =&#34; showDetails = $ index;

您也需要使用ng-show / ng-hide / ng-if = expression