我有一个ng-repeat,它有一个按钮,该按钮具有切换该ng-repeat内的ng-show元素的功能。将所有ng-if设置为false,除了点击项目之外的点击
类movie_option
跨度内的具有ng-click=toggleInfo($index)
:
而且在div additional_info
具有NG-显示,显示或隐藏的元素。
<ul ng-cloak="showResult">
<li class="search_results" ng-repeat="movie in movies | orderBy: '-release_date' track by $index">
<div class="movie_info">
<div class="movie_options">
<div class="slide">
<span class="movie_option">
<span><i class="fa fa-question-circle" aria-hidden="true" ng-click="toggleInfo($index)"></i></span>
</span>
</div>
</div>
</div>
<div class="additional_info" ng-show="hiddenDiv[$index]">
{{movie.overview}}
</div>
</li>
</ul>
当用户点击该图标调用这个函数:
$scope.toggleInfo = function (index) {
$scope.hiddenDiv[index] = !$scope.hiddenDiv[index];
}
这从hiddenDiv NG-显示切换的NG-显示状态。这工作正常。
我想要做的是将所有hiddenDiv状态设置为false,除了点击的状态以外,只有一个ng-show会成为true。
我试过这个,但它似乎没有得到预期的结果。当我有10个元素时,如何点击一个影响没有函数的其他元素?不是那个li(ng-repeat)中包含的点击? –
'ng-click =“displayedIndex = $ index”'是一个表达式。你不需要调用一个函数,但可以直接执行代码。如果你愿意,你可以写'ng-click =“onlyDisplay($ index)”',然后在你的作用域中添加函数'$ scope.onlyDisplay = function(idx){$ scope.displayedIndex = idx; }' – floribon
@PeterBoomsma实际上在测试之后,不直接使用$ scope.displayedIndex会更安全,而是将其作为一个属性$ scope.something.displayedIndex作为实例(否则行为取决于您的Angular版本)。检查工作小提琴:http://jsfiddle.net/6dkLqgfL/ – floribon