0

我知道"&"绑定用于将方法(表达式)传递给指令隔离范围,因此指令将能够在需要时执行它。

很多时候,我需要将相同的表达式从我的主控制器“传递”到嵌套指令(2-3 级),深度超过一层。这就是为什么我自己不喜欢"&"为此目的使用。对我来说,使用绑定发送“回调”"="效果更好。但这不是一个问题。

问题是:除了传递函数之外
,我还可以使用什么?"&"我可以有这样的东西:my-directive-click="clickCount +=1"

4

2 回答 2

1

&更多的是允许您处理表达式,更重要的是(在我看来)允许您将参数放入调用父级的范围。

例如,如果您有:

scope: {
    something: '&'
} 

然后在那个指令模板中你可以这样做:

<select ng-model="selection" ng-change="something({$item: selection})" ...>

该指令的调用者/用户可以在传递给的表达式中访问 $item something,即 $item 被放置在其范围内。

例如

<my-dir something="myOwnVar = $item + 1"></my-dir>

这是一个带有示例的 plunker,包括链接(&表达式的多个嵌套调用): http ://plnkr.co/edit/j4FCBIx0FVz4OT0w50bU?p=preview

于 2015-06-26T09:31:12.703 回答
0

实际上,这&意味着单向数据绑定。

=双向数据绑定也是如此,这意味着对指令所做的更改将持续到原始对象。

@只是一个字符串。

而且&很特别。问题是它为您的值创建了一个 getter,在调用函数的情况下,getter 实际上调用了该函数。我倾向于在 DDO 上这样做:

.directive('myDirective', function() {
  return {
    restrict: 'E',
    scope: {      
      getParameters: '&?params'
    }

因此,通过这种方式,绑定到scopeis的值getParameters(很明显是一个 getter),但在指令元素上,您只会将其称为params

<my-directive params="ctrl.params">

尽管您的问题含糊不清,即使您可以按照您的要求进行操作,但我认为最好在指令中执行此操作,而不是按照您建议的方式。

我希望这会有所帮助。

于 2015-06-21T21:05:35.993 回答