1

私はng-ifを使用しようとしましたが、Angularは彼をコンパイルしませんでした。テストコードを見てください:

<ul class="tmmenu-admin-tabs-builder-panel-answer">
                        <li class="tmmenu-admin-tabs-builder-panel-portlet" ng-repeat="answer in answers">
                            <div>
                                <span ng-repeat="question in questions">
                                    <label ng-repeat="answer in question.answers">
                                        <input type="checkbox">{{question.id}}.{{answer.id+1}}
                                        <span ng-if="test()">ddd</span>
                                    </label>
                                </span>
                            </div>
                            <textarea>{{answer.text}}</textarea>
                        </li>
                    </ul>

および機能テスト:

$scope.test = function(){
        console.log('d');
        return false;
    }

このページを実行すると、false を返すテストにもかかわらず、"Li" に "ddd" が表示されます。

次のステップでは、「ng-if」「ng-show」に置き換えました。

<ul class="tmmenu-admin-tabs-builder-panel-answer">
    ...
    <span ng-show="test()">ddd</span>
    ...
</ul>

そして、その機能、「ddd」非表示。ng-show が動作している場所で ng-if が動作しないのはなぜですか?

4

2 に答える 2

1

ngIf ディレクティブは、{expression} に基づいて DOM ツリーの一部を削除または再作成します。ngIf に割り当てられた式が偽の値に評価された場合、要素は DOM から削除されます。それ以外の場合は、要素のクローンが DOM に再挿入されます。


ngShow ディレクティブは、ngShow 属性に提供された式に基づいて、指定された HTML 要素を表示または非表示にします。要素の ng-hide CSS クラスを削除または追加することで、要素を表示または非表示にできます。.ng-hide CSS クラスは AngularJS で事前定義されており、表示スタイルを none に設定します (!important フラグを使用)。CSP モードの場合は、angular-csp.css を html ファイルに追加してください (ngCsp を参照)。

于 2014-09-01T20:23:05.227 に答える