2013-12-07 10 views

答えて

142

Yes:

「単離」スコープは、親スコープに由来するローカルスコーププロパティのセットを定義するオブジェクトのハッシュを取ります。これらのローカルプロパティは、テンプレートの値のエイリアシングに役立ちます。地元の人の定義は、そのソースにローカルスコーププロパティのハッシュです:

=または=attr - ローカルスコープ 財産とattr属性の値 を経由して定義された名前の親スコープのプロパティとの間の双方向バインディング設定します。 attrの名前が指定されていない場合、 属性名はローカル名と同じであるとみなされます。 <widget my-attr="parentModel">とウィジェット定義scope: { localModel:'=myAttr' }を指定すると、ウィジェットのスコーププロパティlocalModelは に親スコープのparentModelの値を反映します。 parentModelの変更はlocalModelに反映され、 localModelの変更はparentModelに反映されます。 親スコープの プロパティが存在しない場合は、 NON_ASSIGNABLE_MODEL_EXPRESSION例外がスローされます。この動作を回避するには、 =?または=?attrを使用して、プロパティをオプションとしてフラグを立てます。

それはスコープのプロパティに影響を与え、すべてのダイジェストに予想されるエラーをトリガする必要があります

parentSet = parentGet.assign || function() { 
// reset the change, or we will throw this exception on every $digest 
lastValue = scope[scopeName] = parentGet(parentScope); 
    throw Error(NON_ASSIGNABLE_MODEL_EXPRESSION + attrs[attrName] + 
    ' (directive: ' + newScopeDirective.name + ')'); 
}; 

//... 


if (parentValue !== scope[scopeName]) { 
    // we are out of sync and need to copy 
    if (parentValue !== lastValue) { 
     // parent changed and it has precedence 
     lastValue = scope[scopeName] = parentValue; 
    } else { 
     // if the parent can be assigned then do so 
     parentSet(parentScope, lastValue = scope[scopeName]); 
    } 
} 
+1

理にかなっているが、なぜない[このディレクティブ]ない(http://plnkr.co/edit/ FxyDVi5JeWyC6B8TX1fk?p = preview)例外をスローします。親スコーププロパティが存在せず、スコープ割り当てが '=?'を使用していません。 – Nikita

+7

値が設定されているときにエラーが発生したように見えます。http://plnkr.co/edit/OSpaC6sPE0hY9yAeFghr?p=preview –

+0

これは公式のangularjsドキュメントに記載されていますか? – cebor

関連する問題