角度调用父函数,其参数来自两个级别深的指令

Angular call parent function with arguments from directive two levels deep

本文关键字:两个 指令 调用 函数 参数      更新时间:2024-01-08

我在Angular中遇到了一个问题,我在控制器中声明了一个函数,我希望有一个指令能够调用这个函数。我使用指令范围中的&来引用父函数。

当第一个指令中有另一个指令,并且内部指令也引用了控制器中的此函数时,就会出现问题。

函数可以从第一个指令和第二个指令中调用(如果函数没有参数)。函数可以从第一个指令调用,也可以从第二个指令调用NOT(如果函数有参数)。

这个plnkr显示了它的作用:

https://plnkr.co/edit/8E5oNvWcF0QQWL7pmxrD?p=preview

这是bug还是我遗漏了什么?

<directive-two increment="increment()" add="add({amount : amount})"></directive-two>

https://plnkr.co/edit/WvVcNIOJ8zKvFmchOQ5R?p=preview

如果您正在传递具有多个选项的函数,我建议您查看本文http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-3-isolate-scope-and-function-parameters

我用我最喜欢的选项更新了你的plnkr,存储了一个函数引用并调用它,首先你必须引用指令上的函数,而不在函数名后面添加括号,如下所示:

<directive-one increment="increment" add="add"></directive-one>

然后你可以调用这样的函数:

'<button ng-click="increment()()">Increment</button>' + 
'<button ng-click="add()(5)">Add</button>' +

比起发送json对象,我更喜欢这个选项,我认为这更干净。https://plnkr.co/edit/Y3OJpMfcp5R05a8uk1av?p=preview