要素ディレクティブの場合とまったく同じ方法で行います。これらはattrsオブジェクトにあります。私のサンプルでは、isolateスコープを介した双方向バインディングがありますが、必須ではありません。分離されたスコープを使用している場合は、scope.$eval(attrs.sample)
または単にscope.sampleで属性にアクセスできますが、状況によってはリンク時に属性が定義されない場合があります。
app.directive('sample', function () {
return {
restrict: 'A',
scope: {
'sample' : '=',
'another' : '='
},
link: function (scope, element, attrs) {
console.log(attrs);
scope.$watch('sample', function (newVal) {
console.log('sample', newVal);
});
scope.$watch('another', function (newVal) {
console.log('another', newVal);
});
}
};
});
使用されます:
<input type="text" ng-model="name" placeholder="Enter a name here">
<input type="text" ng-model="something" placeholder="Enter something here">
<div sample="name" another="something"></div>
scope: false
)、新しいスコープ(通常のプロトタイプ継承、つまりscope: true
)、およびスコープの分離(つまりscope: { ... }
)です。ディレクティブはどのタイプのスコープを作成しますか?