2015-05-04 105 views
1

我有使用指令以及一个指令:

<parent-directive onsuccess="callback(param)"> 
    <nested-directive onsuccess="callback(param)"> 
    </nested-directive> 
</parent-directive> 

嵌套指令通过$parse()评价功能:

link:function(scope, element, attrs) 
{ 
var fn = $parse(attrs.onsuccess); 
fn(scope, {param: "myParam"}); 
} 

我的问题:如何我可以在函数中设置一个更高的指令(在父指令中),以便可以在父指令的范围内设置函数(这会创建它自己的作用域)

+0

你的意思是你想'父母directive'调用其'onsuccess'功能响应'嵌套指令'调用它的?另外,'parent-directive'是否有隔离区或子范围? –

+0

是的,这就是我的意思。是的,父指令有一个孤立的范围,我目前正在转换为一个子范围(我猜测一个孤立的范围不是要走的路;-) –

+0

孤立范围*可能是要走的路 - 这取决于你想要什么。但是对于隔离作用域,'nested-directive'会超出'parent-directive'范围 –

回答

0

您可以在“nestedDirective”配置设置中使用'require'配置属性。这将使您可以访问“parentDirective”的控制器。

{ 
require: '^parentDirective', 
link: function (scope, element, attrs, parentCtrl) { 
    parentCtrl.exec($parse(attrs.onsuccess)) 
} 
} 

在parentDirective的控制器中实现一个'exec'函数,该函数将在其范围内执行该传递的函数。

+0

谢谢,但这不是一个选项。嵌套指令也必须使用$ parse独立工作 –

1

New Dev帮助我。

它一样简单添加:

范围:{的onSuccess:“&”}