2016-10-13 56 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可以知道它该元素