1

ブレッドクラムナビゲーションを表示するコントロールがあります。ナビゲーションを正しく表示するには、データ(ルートとタイトル)が必要です。データはスコープから取得され、ディレクティブ内で使用されます。

私の問題の原因は、タイトルを翻訳する必要があるコントロールでローカリゼーションディレクティブを使用していることです。また、このローカリゼーションディレクティブは、inの式がng-showfalseと評価された場合でも呼び出されます。次に、ローカリゼーションディレクティブの変換は、誤った文字列を変換しようとするため、例外で終了します(http://jsfiddle.net/F97wn/7/の「localize」ディレクティブを参照)。

それはかなり奇妙に思えます。内部コンテンツを表示するか非表示にするかを設定する場合は、最初に評価され、次に内部コンテンツが評価されると思います。

わかりました、それから私はそれng-showがいくつかのcss属性を設定するだけであることがわかりました、それでそれは私にとって全く役に立たないです。

問題は、問題をどのように解決すればよいのか、代わりに何を使用するのng-showかということです。

例はhttp://jsfiddle.net/F97wn/7/にあります

4

3 に答える 3

2

代わりに on 部分を「toshow()」に設定し、内側の ng-switch-when="true" 部分で ngSwitch を使用して、その領域内にカスタム ディレクティブを配置できます。toshow の値が true でない場合、カスタム ディレクティブは実行されません。

于 2012-12-12T13:27:30.320 に答える
1

ディレクティブが例外をスローしている場合は、ディレクティブが必要なことを行うために必要な情報を持っているかどうかを判断できるように、次のいずれかの方法でより多くの情報をディレクティブに渡す必要があります。

  1. 属性データ -- 例: localize="..." show-me="..."
  2. ctrl に関連付けられたスコープで定義されたもの -- たとえば、$scope.showMe。ディレクティブ スコープは、現在ディレクティブを定義している方法に基づいて、scope.showMe としてこのプロパティにアクセスできます。
  3. または、(データを持つ) サービスをディレクティブに挿入します。たとえば、directive('localize', function(myShowMeService) { ... }
于 2012-12-12T19:11:53.643 に答える
0

を調べることもできます<ng-if>。ngIf ディレクティブは、式内で評価された「偽」および「真」の値に基づいて、DOM ツリー (HTML) の一部を条件付きで削除および再作成します。<ng-show>あなたのニーズ よりも直感的かもしれません。

ただし、現在、AngularJS の不安定なバージョンでのみ使用できます。そのバージョンの AngularJS を使用できる場合は、ここで詳細を確認できます。

于 2013-11-02T20:19:38.260 に答える