2013-06-23 9 views
26

W tym kodzie:W kanciastym, co oznacza znak ampersand w dyrektywie?

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

Co clickable: '&' oznaczają?

Kiedy znajdę dokumentację kątową, nie mogę jej zrozumieć. Wydaje się, że jest napisane w kodzie catch-22, który może być zrozumiany tylko przez ludzi, którzy już rozumieją to, co jest wyjaśnione.

Na przykład znalazłem this video, która najwyraźniej tłumaczy rzecz: &, ale mógł równie dobrze mówić po mandaryńsku.

+2

Jestem z Tobą w dokumentacji API. Jest tak pomocny jak MSDN (czytaj: niezbyt pomocny), jeśli dopiero zaczynasz. –

Odpowiedz

15

Aktualizacja: Nowa dyrektywa API jest here

Istnieje kilka wyjaśnień dotyczących Understanding Scopes doc i zapewniają tę użyteczną link.

Kiedy chciałem zrozumieć te rzeczy, zrobiłem 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>' 
    } 
}); 

i narzut:

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

Zapraszam do zabawy z nim.

+19

Dokumenty dotyczące dokumentów do zrozumienia są bardzo trudne do zrozumienia. –

+7

Powinny one pisać poradnik "Zrozumienie" zakresu " –

+3

Byłoby lepiej, gdybyś jednoznacznie umieścił odpowiedź w odpowiedzi. Sposób, w jaki teraz brzmi odpowiedź brzmi następująco: * "Odpowiedź brzmi: jeśli użyjesz tych linków lub jeśli przestudiujesz mój blok kodu, może uda ci się znaleźć odpowiedź dla siebie, ale nie powiem ci" * –

8

http://docs.angularjs.org/guide/directive (szybkie wyszukiwanie "Zakres")

Od docs:

& lub & attr - zapewnia sposób wykonywania wyrażenie w kontekście zakresu nadrzędnego. Jeśli nie podano żadnej nazwy attr, przyjmuje się, że nazwa atrybutu jest taka sama, jak nazwa lokalna. Podana definicja widgetu scope: {localFn: '& myAttr'}, a następnie wyodrębniona właściwość scope localFn wskaże wrapper funkcji dla wyrażenia count = count + value. Często pożądane jest przekazywanie danych z izolowanego zakresu poprzez wyrażenie i do zakresu nadrzędnego, można to zrobić, przekazując mapę lokalnych nazw zmiennych i wartości do opakowania wyrażeń fn. Na przykład, jeśli wyrażenie to increment (amount), możemy określić wartość kwoty, wywołując localFn jako localFn ({amount: 22}).

6

Oznacza to, że w odniesieniu do klikalne zmiennej w dyrektywie zakres kątowy ocenia powiązanych wyraz w zakresie dominującej i przypisuje wynik do zmiennej. Na przykład, jeśli obejmują dyrektywę w kodzie HTML w ten sposób:

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

kątowa obliczy wyrażenie w kontekście zakresu regulatora strona initialized && i > 0 i przypisać wynik do klikalne zmiennej w zakres dyrektywy. Zostanie to zrobione dynamicznie, zmienna dyrektywy jest aktualizowana za każdym razem, gdy zmienia się wartość wyrażenia.

+1

Dziękuję, to jest pomocne. – Cheeso

+0

Nie jestem pewien, czy zmienna dyrektywy jest automatycznie aktualizowana; "zmienna dyrektywy" to funkcja, którą musisz wywołać jawnie, aby ocenić to wyrażenie. – cipak

Powiązane problemy