我有一个使用callback带有隔离范围的指定属性的form指令:
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]) );
但我认为这不是特别整洁,它涉及在隔离范围内放入其他内容。
有没有更好的办法?
此处为Plunker游乐场(已打开控制台)。
ngAPI 一致,例如ng-click="someFunction()"是一个表达式,其计算结果为执行一个函数。
$scope.callback中,由指令定义对象的callback="someFunction"属性和scope: { callback: '=' }属性设置。$scope.callback 是以后要调用的函数。实际的属性值显然是一个字符串-HTML总是这样。