2017-10-02 7 views
1

最近見たように、ngSwitchはちょっと隠すのではなくDOMから要素を完全に削除する点でngIfのように機能します。今私のアプリケーションでは、これは私に、私の隠されたDOM要素のプロパティにアクセスする必要があるならば、不必要に高価で潜在的に問題のある行為として私を襲う。同時に、異なるngShowディレクティブの束とは対照的に、ngSwitch構文の清潔さが気に入っています(これは、「デフォルト」の振る舞いも含めません)。このディレクティブが要素を隠すだけでなく、要素を完全に削除しないようにする方法を変更できる方法はありますか?ありがとう。Angular.js:DOM要素を追加/削除するのではなく、表示/非表示に切り替える

+0

Angularはオープンソースプロジェクトなので、技術的にはできます。しかし、私はそれに反対し、むしろあなたが望むやり方で行動する独自の指示を作成します。 – Baruch

+1

これはAngular 2+かAngularJSですか? Angular 2+には 'ngShow'がありません。AngularJSには' ngSwitch'、 'ngIf' AFAIKはありません。あなたの質問をより明確にしてください。角度(2+)それ自体は何も提供しません。あなたはあなた自身を作ることができます。 –

+0

申し訳ありません、AngularJS。現在v1.6.5を使用しています。私はそれがいくつかのパラメータを設定することによって可能かどうか、私が気づいていない別の指示があったかどうか疑問に思っていました。 – Okarin

答えて

-1

いいえ、ngSwitchを使用すると、ngShowとngHideのようにノードを非表示にする方法はありません。その条件が真であればngSwitchWhenノードだけが作成され、他のノードはすべてコメントされます。 ngSwitchの利点は、domがより軽くなることです。

+0

私は参照してください。私は文法の清潔さが気に入っていますが、毎回コンポーネント全体を消去して再初期化できるかどうかはまだわかりません(ナビゲーションシステムのタブシステムに使用していますが、その多くに複雑なコンポーネントがありサーバーやその他のもの)。 – Okarin

+0

新しい返信を投稿するのではなく、次回は元の投稿を編集するだけです。 –

0

私はあなたの必要性をよく理解していました。以前は同じ必要性があります。 私はこのようなカスタムディレクティブでngSwitchを使用するためにあなたをアドバイス:

<div ng-switch="mode"> 
 
    <directive-a ng-switch-when="a"></directive-a> 
 
    <directive-b ng-switch-when="b">...</directive-b> 
 
    <directive-c ng-switch-default>...</directive-c> 
 
</div>

、あなたがtemplateUrlのウィッヒが第二のキャッシュを使用します使用して、あなたのディレクティブdirectiveA、directiveBとdirectiveCの定義で指令の呼び出し。

2番目の方法は、すべてのディレクティブでng-showを使用することですが、ng-switchはdomをより軽くできます。

関連する問題