2013-05-21 4 views
89

Ich arbeite an einer Angular.js App, die durch eine JSON-Datei von medizinischen Verfahren filtert. Ich möchte die Details jeder Prozedur anzeigen, wenn der Name der Prozedur (auf derselben Seite) mit ng-click angeklickt wird. Das ist, was ich habe bisher mit den .Verfahren-Details Display eingestellt Div,: none:Versteckte div auf ng-klicken innerhalb ng-repeat

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

Ich bin ziemlich neu in Winkel. Irgendwelche Vorschläge?

+2

Auch Sie wirklich nicht brauchen, a href = "#" in einem Element. –

+2

Sie tun, wenn Sie einen HTML-Validator übergeben möchten. –

Antwort

147

Entfernen Sie die display:none, und verwenden Sie ng-show statt:

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

Hier ist die Geige:

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

I: http://jsfiddle.net/asmKj/


Sie auch ng-class umschalten eine Klasse verwenden können, so mehr, seit es allo ws Sie ein paar schöne Übergänge zu tun: http://jsfiddle.net/asmKj/1/

+3

Wie blende ich das erste div wenn ich auf das zweite div klicke. – User123

+0

Um das Q oben zu beantworten ... Ändern Sie einfach die ng-Klasse in versteckte auf True .... ng-class = "{'versteckte': showDetails" " –

27

Verwenden ng-show und schalten Sie den Wert eines show Umfang Variable in der ng-click Handler.

Hier ist ein funktionierendes Beispiel: 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

Wie blende ich die erste Div, wenn ich auf Sekunde klicken div. – User123

+0

Das verwirrt mich ... wie funktioniert diese "Scope" -Variable? Wenn ich es versuche, sind alle versteckt !? – Nico

Verwandte Themen