我有一个表单指令,它使用具有隔离作用域的指定 callback
属性:
scope: { callback: '&' }
它位于一个 ng-repeat
中,所以我传入的表达式包括对象的 id
作为回调函数的参数:
<directive ng-repeat = "item in stuff" callback = "callback(item.id)"/>
当我完成指令后,它从它的控制器函数调用 $scope.callback()
。对于大多数情况,这样做是可以的,这也是我想要做的,但是有时我想从 directive
本身内部添加另一个参数。
是否有一个角度表达式允许这样: $scope.callback(arg2)
,导致 callback
被 arguments = [item.id, arg2]
调用?
如果没有,那么最简单的方法是什么?
我发现这个方法很有效:
<directive
ng-repeat = "item in stuff"
callback = "callback"
callback-arg="item.id"/>
和
scope { callback: '=', callbackArg: '=' }
和指令调用
$scope.callback.apply(null, [$scope.callbackArg].concat([arg2, arg3]) );
但我不认为这是特别整洁,它涉及到把额外的东西在隔离范围。
还有更好的办法吗?
普朗克游乐场在这里 (控制台打开)。