Показати прихований div на ng-click в межах ng-repeat


100

Я працюю над програмою Angular.js, яка фільтрує json з медичних процедур. Я хотів би показати подробиці кожної процедури при натисканні на ім'я процедури (на одній сторінці) за допомогою ng-клацання. Це те, що я маю до цього часу, з розділеним для відображення розділом .processure-details: none:

<ul class="procedures">
    <li ng-repeat="procedure in procedures | filter:query | orderBy:orderProp">
        <h4><a href="#" ng-click="?">{{procedure.definition}}</a></h4>
         <div class="procedure-details">
            <p>Number of patient discharges: {{procedure.discharges}}</p>
            <p>Average amount covered by Medicare: {{procedure.covered}}</p>
            <p>Average total payments: {{procedure.payments}}</p>
         </div>
    </li>
</ul>

Я досить нова у кутовому. Будь-які пропозиції?


3
Крім того, вам дійсно не потрібен href = "#" в елементі.
Foo L

2
Ви робите це, якщо хочете пройти валідатор HTML.
Danny Bullis

Відповіді:


158

Видаліть display:noneі ng-showзамість цього скористайтеся :

<ul class="procedures">
    <li ng-repeat="procedure in procedures | filter:query | orderBy:orderProp">
        <h4><a href="#" ng-click="showDetails = ! showDetails">{{procedure.definition}}</a></h4>
         <div class="procedure-details" ng-show="showDetails">
            <p>Number of patient discharges: {{procedure.discharges}}</p>
            <p>Average amount covered by Medicare: {{procedure.covered}}</p>
            <p>Average total payments: {{procedure.payments}}</p>
         </div>
    </li>
</ul>

Ось загадка: http://jsfiddle.net/asmKj/


Ви також можете використовувати ng-classдля перемикання класу:

<div class="procedure-details" ng-class="{ 'hidden': ! showDetails }">

Мені це більше подобається, оскільки це дозволяє робити хороші переходи: http://jsfiddle.net/asmKj/1/


3
Як приховати перший div, коли натискаю на другий div.
Користувач123

Щоб відповісти на Q вище ... Просто змініть ng-клас на прихований на true .... ng-class = "{'hidden': showDetails}"
Chris Lambrou

28

Використовуйте ng-showта перемикайте значення showзмінної області на ng-clickобробці.

Ось робочий приклад: http://jsfiddle.net/pvtpenguin/wD7gR/1/

<ul class="procedures">
    <li ng-repeat="procedure in procedures">
        <h4><a href="#" ng-click="show = !show">{{procedure.definition}}</a></h4>
         <div class="procedure-details" ng-show="show">
            <p>Number of patient discharges: {{procedure.discharges}}</p>
            <p>Average amount covered by Medicare: {{procedure.covered}}</p>
            <p>Average total payments: {{procedure.payments}}</p>
         </div>
    </li>
</ul>

4
Як приховати перший div, коли натискаю на другий div.
Користувач123

Це спантеличує мене ... як працює ця змінна "область"? Коли я спробую це, все приховано !?
Ніко
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.