0

我創建了一個限制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 
    } 
    }); 
+0

我想最好和最簡單的方法是隻加ng - 如果對內部指令和從外部元素 –

+0

@PetrAveryanov設置我不想觸摸內部元素,這就是爲什麼我建立一個外部元素指令這對我來說就是這樣 – skmasq

回答

0

ngIf將幫助您:

<div ng-if="condition"> 
    <inner-element> 
    </inner-element> 
    </div> 
+0

這個'ng-if'正是我想要替換的東西。 – skmasq