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