2016-01-06 48 views
2

我有一個角指令(限制的元件),其具有鏈接到的功能的屬性(使用「&」屬性)角指令與鏈接到父範圍之外的功能屬性

例如:

app.directive('myDirective', function() { 
    return { 
     restrict: 'E', 
     scope: { 
      myonclick: "&", 
     }, 
     controller: 'myController', 
     template: '<button ng-click="clicked()">Click me!</button>' 
    } 
}); 

即時分配功能的屬性這樣的:

<my-directive myonclick="inScopeFunction()"></my-directive> 

其工作細如果函數是角控制器SC內部OPE。 但我不能將它分配給角度範圍以外的函數。

有在plunker

感謝

工作的例子

回答

1

因爲inScopeFunction()是一個全局方法,您可以直接在您的指令中調用它。在指令內的元素上註冊一個單擊監聽器,並在偵聽器回調中調用inScopeFunction()。這裏是更新plunk

link: function postLink (scope, element, attrs) { 
     element.on('click', function() { 
     window[attrs.myonclick]() 
     }); 
    } 

HTML:

<my-directive myonclick="outScopeFunction"></my-directive> 
+0

是的,但我不知道指令中的函數,我想知道它是一個屬性,以便每次都能綁定到不同的函數 – amichai

+0

我更新了plunk http:// plnkr。 CO /編輯/ aCjMZ2QouLalRELPphwQ?p =預覽。請看一下。 – varun

+0

謝謝,它的工作 – amichai

0

你的控制器將有機會獲得全球的對象,所以你可以從那裏

$scope.inScopeFunction = outScopeFunction 

訪問它從你的指令控制器訪問它,你可以傳遞字符串並從那裏調用全局對象

<my-directive myonclick="'outScopeFunction'"></my-directive> 
... 
app.controller('myController', function($scope) { 
    $scope.clicked = function(){ 
    window[$scope.myonclick()]() 
    } 
}); 
+0

其真實,但我需要的指令直接調用該函數。謝謝任何方式 – amichai