19

ディレクティブ定義の一部として次のものがあるとします。

scope: {
    prop1: '@'
}

ディレクティブに prop1 属性がない場合、prop1 がデフォルト値を取得する方法はありますか? 確かに、自分で定義されているかどうかを確認して設定することはできますが、期待どおりにプロパティが常に設定されるとは限りません。ドキュメントで見逃した構文があるかどうか、またはこれを行うための適切な標準的な方法があるかどうか疑問に思っています。ありがとう。

4

2 に答える 2

19

割り当てたいデフォルト値によって異なります。compile親スコープの名前をデフォルトにする場合は、ディレクティブの関数でデフォルトの属性値を設定すると機能します。

  コンパイル:関数(要素、属性){
    if (attrs.person == 未定義) {
      attrs.$set("人", "人");
    }
  ...

ディレクティブにデフォルト値を提供させたい場合、Angular では、Isolate スコープでエイリアスに割り当てることができないため、少しトリッキーになります (伝播しようとしているウォッチャーから「割り当て不可のモデル式」例外が発生します)。分離された親スコープへの割り当て)。ただし、属性をオプションとしてマークすることでこれを防ぐことができます (つまり、プロパティが省略されている場合、Angular はリスナーを登録しません)。

  スコープ: {
    人: "=?"
  }、
  リンク:関数(スコープ、要素、属性){
    if (scope.person == undefined) {
      scope.person = "ボブ";
    }
    ...
  }
于 2013-08-04T17:12:38.180 に答える
-3
scope['prop1'] = scope['prop1'] || '@'
于 2012-09-28T20:10:54.143 に答える