在棱角分明,指令中的&符是什么意思?

时间:2013-06-23 06:43:02

标签: angularjs

在此代码中:

app.directive( 'myCustomDirective', function() {
  return {
    restrict: 'EA',
    scope: { value: '=myCustomDirective', clickable: '&', editing: '=' },
    template: '<span ng-click="handleClick()" ng-bind="value"></span>',
    ...

clickable: '&'表示什么?

当我找到Angular文档时,我无法理解它。它似乎是用catch-22代码编写的,只有已经理解了解释内容的人才能理解。

例如,我找到了this video,这显然解释了&amp;事情,但他也可能会说普通话。

3 个答案:

答案 0 :(得分:14)

更新:新指令API为here

Understanding Scopes doc还有一些解释,它们提供了这个有用的link

当我想了解这些内容时,我做了一个Fiddle

angular.module('scopePropertiesModule', [])
  .directive('scopeProps', function(){
    return {
      restrict: 'C',
      scope: {parameterTitle:'@', 
              bidirecTitle:'=',
              delegateDisplay:'&'},
      template: '<div>' +
                  'Parameter title :<br>' + 
                  '<input ng-model="parameterTitle"> => {{parameterTitle}}<br>'+
                  '<br>' +
                  'Biderectional title :<br>' +
                  '<input ng-model="bidirecTitle"> => {{bidirecTitle}}<br>' + 
                  '<br>' +
                  'Delegate display :<br>' +
                  '{{delegateDisplay()}}<br>' + 
                  '</div>'  
    }
});

和标记:

<div class="scopeProps"
     parameter-title="{{title}}" 
     bidirec-title="title"
     delegate-display="displayTitle()"></div>

随意玩它。

答案 1 :(得分:10)

http://docs.angularjs.org/guide/directive(快速搜索“范围”)

来自文档:

  

&安培;或&amp; attr - 提供在父作用域的上下文中执行表达式的方法。如果未指定attr名称,则假定属性名称与本地名称相同。范围的给定和窗口小部件定义:{localFn:'&amp; myAttr'},然后隔离范围属性localFn将指向count = count + value表达式的函数包装器。通常需要通过表达式将数据从隔离范围传递到父范围,这可以通过将局部变量名称和值的映射传递到表达式包装器fn来完成。例如,如果表达式是increment(amount),那么我们可以通过将localFn称为localFn({amount:22})来指定金额值。

答案 2 :(得分:7)

这意味着当在指令范围中引用可点击的变量时,Angular会评估父范围中的关联表达式,并将结果分配给变量。 例如,如果您以这种方式在HTML代码中包含该指令:

<my-custom-directive ... clickable='initialized && i > 0' ...>

Angular将在页面控制器范围的上下文中计算initialized && i > 0表达式,并将结果分配给指令范围中的可单击变量。 这将动态完成,每次表达式值更改时都会更新指令变量。