В angular, что означает амперсанд в директиве?
В этом коде:
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, который может быть понят только людьми, которые уже понимают, что объясняется.
Например, я нашел это видео, которое, по-видимому, объясняет и что-то такое, но он, возможно, также говорил на мандаринском языке.
Ответы
Ответ 1
Обновление: Новый директивный API здесь
Есть еще несколько пояснений к "Дополнение к документу", и они предоставляют эту полезную .
Когда я хотел понять этот материал, я сделал 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>
Не стесняйтесь играть с ним.
Ответ 2
http://docs.angularjs.org/guide/directive (быстрый поиск по "объему" )
Из документов:
& или & attr - обеспечивает способ выполнения выражения в контексте родительской области. Если имя attr не указано, предполагается, что имя атрибута совпадает с локальным именем. Определенное и видимое определение области: {localFn: '& myAttr'}, затем изолировать свойство scope localFn будет указывать на оболочку функции для выражения count = count + value. Часто желательно передавать данные из изолированной области через выражение и в родительскую область, это можно сделать, передав карту локальных имен переменных и значений в оболочку выражения fn. Например, если выражение является приращением (суммой), мы можем указать значение суммы, вызвав localFn как localFn ({amount: 22}).
Ответ 3
Это означает, что, ссылаясь на переменную clickable в области директивы, Angular оценивает связанное выражение в родительской области и присваивает результат переменной.
Например, если вы включили директиву в свой HTML-код следующим образом:
<my-custom-directive ... clickable='initialized && i > 0' ...>
Angular будет вычислять выражение initialized && i > 0
в контексте области контроля страниц и назначать результат кликабельной переменной в области директивы.
Это будет выполняться динамически, переменная директивы обновляется каждый раз при изменении значения выражения.