2015-05-04 106 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:「&」}