在此代码中:
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;事情,但他也可能会说普通话。
答案 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
表达式,并将结果分配给指令范围中的可单击变量。
这将动态完成,每次表达式值更改时都会更新指令变量。