2016-10-13 87 views
2

我正在創建指令到AngularJS,如何配置它必須是指令A的子?如何定義Angular指令必須是Angular中特定指令的子代?

像這個例子:

<my-modal> 
    <m-header>Header</m-header> 
</my-modal> 

m-header必須是my-modal孩子,如果沒有,會出現一些異常

+1

看一看['require'](直接孩子https://docs.angularjs.org/api/ng /服務/ $#編譯-require-)。我會對'^^'前綴感興趣。 –

+0

你寫什麼指令? 'my-modal'或'm-header'? –

回答

5

可以使用require參數努力需要像下面的代碼裏的父指令。

app.directive('mHeader', function() { 
    return { 
    require: '^^myModal', 
    restrict: 'E', 
    transclude: true, 
    link: function(scope, element, attrs, myModalCtrl) { 
     myModalCtrl.close(); 
    }, 
    templateUrl: 'my-header.html' 
    }; 
}); 

此外,使用require的時候,你可以有機會獲得母公司控制器,你可以在myModalCtrl看到。

+0

它將如何檢查m-header必須是我的模態的孩子 –

+0

你也應該解釋你的答案。請注意,'require',沒有前綴,會嘗試在當前元素上找到所需的控制器,這不符合Lai的條件。 –

+0

我正在嘗試,但它被阻止,因爲您在編輯我的帖子時進行了編輯。我無意中抹去了部分解釋。無論如何,謝謝你的幫助:)讚賞 –

0

這是一種解決方法。 您可以比較

if(elem.parent()[0].localName= 'my-model') { 

} 

隨着u可以知道它該元素