ng-repeat에는 ng-repeat 요소를 토글하는 기능이있는 버튼이 있습니다.클릭 한 항목을 제외하고 클릭하면 모든 ng-if를 false로 설정합니다.
그리고 DIV additional_info
표시하거나 요소를 숨기는 NG 쇼를 가지고 클래스 movie_option
범위 안에
은 ng-click=toggleInfo($index)
있다. 사용자가 아이콘을 클릭하면
<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 쇼 상태에서 다른 상태로 전환합니다. 이것은 잘 작동합니다.
내가 원한 것은 모든 hiddenDiv 상태를 false로 놓는 것입니다. 단 하나의 ng-show 만 클릭하면 true가됩니다.
나는 이것을 시도했지만 예상 한 결과를 얻지 못하는 것 같습니다. li 요소가 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