2015-06-21 17 views
0

我知道"&"結合用來傳遞方法(表達式),以指令隔離範圍,所以在需要時該指令將能夠執行它。AngularJS - 對孤立範圍表達式替代使用(「&」)

很多時候我需要從我的主控制器,深超過一個等級至「通」一樣的表情,嵌套的指令(2-3級)。這就是爲什麼我自己不想使用"&"來達到這個目的。對我而言,使用"="綁定發送「回調」效果會更好。但這不是一個問題。

現在的問題是:
什麼,我可以使用"&"除了傳遞函數? 我可以有這樣的事情:my-directive-click="clickCount +=1"

回答

0

在現實中,&旨在爲單向數據綁定。

所以=是雙向的數據結合,這意味着在指令完成將持續到原來的對象改變。

@只是一個字符串。

而且&是特殊的。問題是它爲你的值創建了一個getter,在調用函數的情況下,getter實際上調用該函數。我傾向於這樣做對DDO:

.directive('myDirective', function() { 
    return { 
    restrict: 'E', 
    scope: {  
     getParameters: '&?params' 
    } 

所以在這種方式,綁定到scopegetParameters(所以很明顯是一個getter),但指令元素上,你會僅僅指它作爲params

<my-directive params="ctrl.params"> 

你的問題是模糊的,但並即使你可能能夠做你問的是什麼,我認爲這將是最好做的指令,而不是內部的方式提出你。

我希望這有助於。

+0

我沒有對'&'看起來像是吸氣。這對我來說總是一個表達。這樣,我嘗試更新狀態或執行「父」控制器上的行爲,即使我需要「獲取」值。'&'甚至對於「get」的問題是,如果要獲得值,我需要傳遞來自2級嵌套指令(一個或多個參數)的參數,比我頭疼......我沒有找到一個簡單的方法去做吧。但是用「=」它很容易。順便說一句,我認爲「=」只有在「引用類型」的情況下才是「雙向綁定」。我不認爲如果指令改變它的價值類型會改變父母,但也許我錯了:) –

+0

如果你傳遞參數來獲取的東西,那麼你應該使用服務恕我直言。關於你的想法,如果在指令上完成,'='將在父對象上保持更改。檢查這個掠奪者看到你的行動的關注:http://plnkr.co/edit/DbYYbAsCc5T2XdsRJpSw?p=preview –

+0

@AntonioLaguna是的,如果你通過像字符串或數字原始 那麼你的指令將無法修改它回到父母範圍。如果你將你的圖元包裹在一個對象中,它將被修改。 – szydan

1

&更關心的是允許你處理表達式,更重要的是(在我的眼中)允許你將參數放到調用父對象的範圍中。

例如,如果您有:

scope: { 
    something: '&' 
} 

,然後在僞指令模板,你可以這樣做:這個指令的

<select ng-model="selection" ng-change="something({$item: selection})" ...> 

呼叫者/用戶比可以通過表達式來訪問$項目到something,即$ item被放置在它的範圍內。

例如

<my-dir something="myOwnVar = $item + 1"></my-dir> 

這裏是一個這樣的例子一plunker,包括鏈(一&表達式的多個嵌套調用): http://plnkr.co/edit/j4FCBIx0FVz4OT0w50bU?p=preview

相關問題