5

コンパイルされ、リンクされた要素から指示を動的に追加または削除する適切な方法は何ですか?AngularJS - 要素からの指示を動的に削除する

私はそこにたくさんの入力があるページを持っています(リストはかなり長いので、一般的な解決策を思いついています)。私がしたいのは、特定のフラグが設定されている場合、すべての入力を無効にすることです。私はjQueryのelement.prop( 'disabled'、true)を使ってこれを行うことができます。

このようなアプローチの問題は、いずれかの入力にng-disabledまたはng-enabledディレクティブがアタッチされている場合、それらの式の変更で以前に設定された 'disabled'プロパティが上書きされることです。しかし、私は彼らが私のグローバルフラッグを無効にしないようにしたい。

ng-disabledまたはng-enabled式のための別のワッチャーを追加するソリューションが登場しましたが、これは最善の方法ではないようです。

私がやりたいことは、要素に付けられたほとんどのディレクティブを削除し、適切な属性を自分で設定することです。しかし、要素を再コンパイルして再リンクしてドキュメント内で置き換えた場合、古い要素がDOMドキュメントツリーから切り離され、メモリに残りますので、メモリリークが発生します。これらの要素は基本的に全ページの主要な範囲を使用するので、要素の範囲を破棄することはできません。

+4

あなたは[ngIf](http://docs.angularjs.org/api/ng.directive:ngIf)を試しました – dohaivu

+0

あなたの問題は私には分かりませんが、なぜDOMノードを削除する必要があるのですか?あなたがしようとしているのは、フラグに基づいてそれらを無効にすることだけです。私はあなたの文脈で「グローバル・フラッグ」が何を意味するかについても不明です。 – dmackerman

+0

私はあなたが入力に関して何をしたいのか少し混乱しています。彼らがこのを持っているなら、ng-disableをオーバーライドするものもありますか? – SoEzPz

答えて

0

あなたはブールに解決機能を付加することができ、「someBoolean」の

<div ng-show="someBoolean" >Some text or nested element</div> 

または代わりのようなものを試すことができます。あなたのブール値を設定するには、そのためNG-ショーをデータバインディングは、次のダイジェストサイクルの終了時に更新されますangulars双方向の

<button type="button" ng-click="setBoolean()">Some text or nested element </button> 

モデル/ブール値を更新し、あなたの入力にNGクリック付けることができ

関連する問題