2013-06-23 30 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

相關問題