Подтвердить что ты не робот

В 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, который может быть понят только людьми, которые уже понимают, что объясняется.

Например, я нашел это видео, которое, по-видимому, объясняет и что-то такое, но он, возможно, также говорил на мандаринском языке.

4b9b3361

Ответ 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 в контексте области контроля страниц и назначать результат кликабельной переменной в области директивы. Это будет выполняться динамически, переменная директивы обновляется каждый раз при изменении значения выражения.