对父指令的必需依赖性

时间:2013-04-09 09:01:59

标签: angularjs angularjs-directive

我有一个<layout>指令,它包含许多<pane>元素。

是否可以创建窗格指令,使其指令仅在<layout>元素中找到时适用?

文档说明:

  

require - 要求将另一个控制器传递给当前指令   连接功能。 require需要指令控制器的名称   传入。如果找不到这样的控制器则会引发错误。

使用require: '^layout',当在<pane>元素之外找到<layout>元素时,会抛出错误,但dom元素仍会被转换。是否可以定义指令以将其行为限制在<layout>元素的范围内?

如果我需要在<grid>元素中包含不同指令的另一个窗格指令,该怎么办?

1 个答案:

答案 0 :(得分:1)

这是一种方法(可能不是最佳方式):在layout指令上定义一个控制器,然后在require中选择^? layout指令。在链接函数中,检查是否定义了layoutCtrl:

require: '^?layout',
link: function(scope, element, attrs, layoutCtrl) {
   if(!layoutCtrl) return;  // do nothing if no layout

Fiddle