2015-04-15 31 views
5

我是AngularJS的新品牌,在進行Codecademy課程的過程中,我被卡住了。我試圖用下面的語法重複一個指令。角度重複指令語法

<div class="card" ng-repeat="app in apps"> 
    <app-info info="{{ app }}"></app-info> 
</div> 

我玩了一下,想通了,我需要刪除大括號。

<div class="card" ng-repeat="app in apps"> 
    <app-info info="app"></app-info> 
</div> 

但是,如果我沒有使用指令,我想我會訪問這樣的信息。 AngularJS documentation.

<div class="card" ng-repeat="app in apps"> 
    {{ app }} 
</div> 

有人能解釋爲什麼我不需要花括號來幫助我更好地理解AungularJS。謝謝!

+0

[如何獲取自定義指令中的評估屬性](http://stackoverflow.com/questions/12371159/how-to-get-evaluated-attributes-inside-a-custom-directive) –

回答

1

插值符號的使用{{}}取決於指令的實現。 有些指令如ng-click='expression'ng-if='expression'需要一個沒有雙曲線的表達式。

雖然其他一些指令如ng-src='{{expression}}'接受插值符號。

這一切都取決於如何設置指令。

插值的基本用法是執行表達式並用表達式(字符串值)的返回值替換內容。

當您瞭解有關指令的更多信息時,您將學習如何使用@,=,&將參數傳遞給指令。這些參數可以是一個簡單的字符串值(在這種情況下可以使用插值),也可以是對象或函數。

1

在特定的情況下,使用{{data}}您正在評估該變量的值,但是當你在其他指令做info="app"其中包含了scope變量稱爲info,你正在做的是結合我們app-info指令的info範圍變量到控制器(或父指令)app範圍變量。

+0

I想我明白你在說什麼。你能否用簡單的語言來回答問題,以便理解? –

+0

默認情況下,Angular指令的屬性值被假定爲[表達式](https://docs.angularjs.org/guide/expression),並按照這種方式進行評估,但在元素文本節點的上下文中,它們被假定爲爲純文本並且需要花括號來通知[parser](https://docs.angularjs.org/api/ng/service/$parse)花括號之間的文本是一個角度表達式。 – HJ05

+0

@ HJ05有正確的解釋 – Matho