Ng-tekrar içinde gizli bölme-tıklamayı göster


100

Tıbbi prosedürlerin bir json dosyası aracılığıyla filtreleyen bir Angular.js uygulaması üzerinde çalışıyorum. Ng-tıklama kullanılarak prosedürün adına tıklandığında (aynı sayfada) her prosedürün ayrıntılarını göstermek istiyorum. .Procedure-details div öğesi görüntülenecek şekilde ayarlandığında şu ana kadar elde ettiğim şey bu: yok:

<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>

Angular konusunda oldukça yeniyim. Baska öneri?


3
Ayrıca, a öğesinde gerçekten bir href = "#" öğesine ihtiyacınız yoktur.
— Foo L

2
Bir HTML doğrulayıcısını geçmek istiyorsanız yaparsınız.
— Danny Bullis

Yanıtlar:


158

Kaldır display:noneve ng-showyerine şunu kullan:

<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>

İşte keman: http://jsfiddle.net/asmKj/


ng-classBir sınıfı değiştirmek için de kullanabilirsiniz :

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

Bunu daha çok seviyorum, çünkü bazı güzel geçişler yapmanıza izin veriyor: http://jsfiddle.net/asmKj/1/


3
İkinci div'e tıkladığımda ilk div nasıl gizlenir.
— User123

Yukarıdaki soruya cevap vermek için ... Sadece ng-sınıfını true'da gizli olarak değiştirin .... ng-class = "{'hidden': showDetails}"
— Chris Lambrou

28

İşleyicideki ng-showbir showkapsam değişkeninin değerini kullanın ve değiştirin ng-click.

İşte çalışan bir örnek: 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
İkinci div'e tıkladığımda ilk div nasıl gizlenir.
— User123

Bu beni şaşırtıyor ... bu "kapsam" değişkeni nasıl çalışıyor? Bunu denediğimde, hepsi gizli !?
— Nico
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.