ng-click / ng-class组合与$ index无法正常工作

时间:2015-03-06 09:33:16

标签: angularjs angularjs-ng-click ng-class

由于某些原因,我的ng-click / ng-class组合无效。点击后,必须根据hide变量的相等性添加“productDisplay”类。

            <div ng-repeat="product in project.data track by $index">

                <p ng-click="productDisplay = $index"><strong>{{product.name}}</strong></p>

                <div class="fileList" ng-class="{'hide': productDisplay !== $index}">{{$index}}</div>

我可以点击<p>元素,div fileList将会打开,但一旦打开我就无法关闭它们。

有什么想法吗?

THX,

1 个答案:

答案 0 :(得分:1)

尝试切换而不是去$index,使用productDisplay = !productDisplay这会更改ng-class表达式并在点击时应用hide类,或者使用更好的代码ng-if / ng-show / ng-hide而不是ng-class

<强> HTML

<div ng-repeat="product in project.data track by $index">

    <p ng-click="productDisplay = !productDisplay"><strong>{{product.name}}</strong></p>

    <div class="fileList" ng-class="{'hide': productDisplay">{{$index}}</div>
</div>

<强>更新

同样的事情可以通过在productDisplay的父范围内维护ng-repeat变量来实现,然后你需要$parent.productDisplay内的ng-repeat

<div ng-repeat="product in project.data track by $index">

    <p ng-click="$parent.productDisplay = $index"><strong>{{product.name}}</strong></p>

    <div class="fileList" ng-class="{'hide': $parent.productDisplay !== $index">{{$index}}</div>
</div>

感谢。