いくつかの条件が満たされない場合に HTML アクセスを制限するディレクティブを作成しています。残念ながら、内部 HTML が変更およびコンパイルされる前に内部ディレクティブが呼び出されると、問題が発生します。
外部ディレクティブからネストされたディレクティブの実行を停止することは可能ですか?
例 (コンソールを参照): http://jsfiddle.net/xaQzb/14/
HTML:
<div ng-app="testApp">
<outer-element>
<inner-element>
</inner-element>
</outer-element>
</div>
アプリ
angular.module('testApp', []);
var app = angular.module('testApp');
app
.directive('outerElement', ['$compile', function($compile) {
function linker(scope, element) {
element[0].innerHTML = 'Replaced HTML and should not execute anything inside';
$compile(element.contents())(scope);
}
return {
restrict: 'E',
scope: false,
link: linker
}
}]);
app
.directive('innerElement', function() {
function linker(scope, element) {
console.log('Directive has been called');
}
return {
restrict: 'E',
scope: false,
link: linker
}
});