有没有办法允许用户为指令提供方法名称,让指令在 上创建该方法scope
,然后处理对该方法的调用?
所以,首先我让用户定义一个方法名HELLO
,然后我让用户HELLO
从其他地方调用(仍然在同一个范围内)
<div ng-controller="AppController">
<div mydirective="" mydirective-data="MyJson" mydirective-fx="HELLO" />
<button ng-click="HELLO()">Click me</button>
</div>
在内部,指令应该看到HELLO
并将其映射到它自己的方法。在指令中,我正在查看传入的方法名称并分配它
app.directive('mydirective', function() {
return {
restrict: 'A',
scope: {
data: '=mydirectiveData',
fx: '=mydirectiveFx'
},
link: function(scope, element, attrs) {
scope.fx = function () { console.log(scope.data); } ;
}
}
}
);
如您所见,我将scope.fx
应该是 分配给控制器中定义的HELLO
应该读取的函数。scope.data
尝试这样做不会做任何事情,也不会引发错误。这让我想知道我是否以错误的方式这样做。
为了清楚起见,我创建了一个plunker。记得打开控制台。