ng-repeat内のng-clickで非表示のdivを表示


100

私は、医療手順のjsonファイルをフィルター処理するAngular.jsアプリに取り組んでいます。ng-clickを使用して(同じページで)手順の名前をクリックすると、各手順の詳細が表示されます。これは私がこれまで持ってきたもので、.procedure-details divがdisplay: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
また、a要素にhref = "#"は本当に必要ありません。
Foo L

2
HTMLバリデータを渡したい場合に行います。
Danny

回答:


158

を削除しdisplay:noneng-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
2番目のdivをクリックしたときに最初のdivを非表示にする方法。
User123、2016年

上記のQに答えるには... ng-classをhidden on trueに変更します... ng-class = "{'hidden':showDetails}"
Chris

28

ハンドラーでスコープ変数のng-show値を使用して切り替えます。showng-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
2番目のdivをクリックしたときに最初のdivを非表示にする方法。
User123、2016年

これは私を困惑させます...この「スコープ」変数はどのように機能しますか?やってみると全てが隠されている!?
ニコ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.