ディレクティブ内に分離スコープを作成すると、外側のスコープを内側のスコープにマップできます。属性にマップする 6 つの異なる方法を見てきました。
- =属性
- &属性
- @attr
- =
- &
- @
これらのスコープ マッピング オプションはそれぞれ何をしますか?
ディレクティブ内に分離スコープを作成すると、外側のスコープを内側のスコープにマップできます。属性にマップする 6 つの異なる方法を見てきました。
これらのスコープ マッピング オプションはそれぞれ何をしますか?
ターゲット DOM 属性の名前が分離スコープ プロパティ名と一致する場合は、4、5、および 6を使用します。これは、次の例の実用的なフィドルです。
<div ng-app='isolate'>
<h3>Outer Scope</h3>
<input type="text" ng-model="myModel" />
<p>msg: {{ msg }}</p>
<h3>Inner Scope</h3>
<div id="inner">
<div my-directive at="{{ myModel }}" equals="myModel" ampersand="msg=msg+'click'"></div>
</div>
</div>
angular.module('isolate', [])
.directive('myDirective', function () {
return {
template:
'<label>@attr</label><input value="{{ myAt }}" />' +
'<label>@</label><input value="{{ at }}" />' +
'<label>=attr</label><input ng-model="myEquals" />' +
'<label>=</label><input ng-model="equals" />' +
'<label>&attr</label><input type="button" ng-click="myAmpersand()" value="Btn" />' +
'<label>&</label><input type="button" ng-click="ampersand()" value="Btn" />',
scope: {
myAt: '@at',
myEquals: '=equals',
myAmpersand: '&ersand',
at: '@',
equals: '=',
ampersand: '&'
}
};
});