我知道"&"
绑定用于将方法(表达式)传递给隔离作用域的指令,因此该指令将能够在需要时执行它。
很多时候,我需要将同一个表达式从主控制器"传递"到嵌套指令(2-3级),深度超过一级。这就是为什么我自己不喜欢使用"&"
的原因。对我来说,使用"="
绑定发送"回调"效果要好得多。但这不是一个问题。
问题是:
除了传递函数之外,我还可以使用"&"
做什么?我可以要这样的东西吗:my-directive-click="clickCount +=1"
?
&
更多的是允许您处理表达式,更重要的是(在我看来)允许您将参数放入调用父级的范围中。
例如,如果您有:
scope: {
something: '&'
}
然后在该指令模板中,您可以执行以下操作:
<select ng-model="selection" ng-change="something({$item: selection})" ...>
此指令的调用方/用户可以访问传递给something
的表达式中的$item,即$item位于其作用域中。
例如
<my-dir something="myOwnVar = $item + 1"></my-dir>
这里有一个包含链接(&
表达式的多个嵌套调用)的plunker示例:http://plnkr.co/edit/j4FCBIx0FVz4OT0w50bU?p=preview
实际上,&
是单向数据绑定。
因此=
是双向数据绑定,这意味着对指令所做的更改将保留到原始对象。
@
只是一个字符串。
CCD_ 12是一个特殊的。问题是,它为您的值创建了一个getter,在调用函数的情况下,getter实际上调用了该函数。我倾向于在DDO:上这样做
.directive('myDirective', function() {
return {
restrict: 'E',
scope: {
getParameters: '&?params'
}
因此,通过这种方式,绑定到scope
的值是getParameters
(因此很明显是一个getter),但在directive元素上,您只能将其称为params
:
<my-directive params="ctrl.params">
不过,你的问题很模糊,即使你可以按照你的要求去做,我认为最好在指令中这样做,而不是按照你提出的方式。
我希望这能有所帮助。