2013-06-23 29 views
26

在此代码:在角度上,指令中的&符号是什么意思?

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,这显然解释了&的事情,但他可能会说普通话。

+2

我与你在API文档。如果你是初学者,它与MSDN一样有帮助(阅读:不是很有帮助)。 –

回答

15

更新:新指令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> 

随意发挥它。

+19

理解范围doc很难理解 –

+7

他们应该写一个“Understanding”Understanding Scopes“指南 –

+3

如果您明确地将答案放在答案中,会更好。现在的答案是这样的:*“答案是,如果你使用这些链接,或者如果你研究我的代码块,也许你可以自己找出答案,但我不会告诉你” * –

8

http://docs.angularjs.org/guide/directive

从文档(对于 “范围” 快速搜索):

&或& ATTR - 提供了一种在父范围的上下文中执行的表达式。如果未指定attr名称,则假定属性名称与本地名称相同。给定范围的小部件定义:{localFn:'& myAttr'},然后隔离范围属性localFn将指向count = count + value表达式的函数包装。通常希望通过表达式向父范围传递来自独立范围的数据,这可以通过将局部变量名称和值的映射传递到表达式包装函数fn来完成。例如,如果表达式是增量(金额),那么我们可以通过调用localFn作为localFn({amount:22})来指定金额值。

6

这意味着,在该指令范围指的是可点击的可变时,角评估在父范围相关联的表达,并将结果赋给该变量。 例如,如果您在HTML代码的指令是这样的:

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

角将计算在页面控制器范围的背景下,initialized && i > 0表达和结果分配给该指令范围的可点击的变量。 这将会动态完成,每当表达式值更改时,指令变量都会更新。

+1

谢谢,这很有帮助。 – Cheeso

+0

我不确定指令变量是否自动更新; “指令变量”是一个函数,您必须明确调用以评估该表达式。 – cipak

相关问题