我有一个使用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游乐场(已打开控制台)。
ng
API 一致,例如ng-click="someFunction()"
是一个表达式,其计算结果为执行一个函数。
$scope.callback
中,由指令定义对象的callback="someFunction"
属性和scope: { callback: '=' }
属性设置。$scope.callback
是以后要调用的函数。实际的属性值显然是一个字符串-HTML总是这样。