2016-02-11 67 views
11

{{}}:何時使用雙括號括在從角文檔兩者angularJS

Angular Expressions
角表達式的JavaScript狀代碼片段主要 置於內插綁定如

<span title="{{ attrBinding> }}">{{ textBinding }}</span> 

而且直接在指令中使用 屬性,如ng-click="functionExpression()"

例如,這些是有效的表達式在角:

1 + 2 A + B user.name項[指數]

但是我關於何時使用有點困惑雙大括號語法{{}}和什麼時候不到。這些文檔似乎暗示在指令屬性中使用表達式時不需要它們(請參閱上面的ng-click示例)。

雖然下面的代碼工作提供傳聞證據相反:

<ul id="Menu"> 
     <li ng-repeat="appModule in applicationModules" id="{{appModule.Name}}" ng-class="{ 'selected' : selectedAppModule == '{{appModule.Name}}' }" ng-click="menuClicked(appModule.Name)"> 
      <a href="#Content/{{appModule.Name}}">{{appModule.Display}}</a> 
     </li> 
    </ul> 

注意如何在納克級的指令都採用了雙括號和NG-點擊指令裏面卻沒有。

你怎麼知道什麼時候使用它們,什麼時候不使用?

+1

當你想獲得它的值時,你使用了大括號,而當你想將它用作變量時,你不使用大括號 – MayK

回答

9

它取決於有問題的指令屬性和它使用的綁定類型。更進一步取決於你在給定情況下的打算。

從你的例子:

ng-repeat="appModule in applicationModules" 

無需大括號,因爲這表達由角評估的NG-重複指令內。


id="{{appModule.Name}}" 

在這裏我們需要括號,因爲我們想要的ID等於表達式的值。


ng-class="{ 'selected' : selectedAppModule == '{{appModule.Name}}' }" 

我敢肯定,這可以寫成:

ng-class="{ 'selected' : selectedAppModule == appModule.Name }" 

,你會得到相同的行爲。


ng-click="menuClicked(appModule.Name)" 

在這個例子中,我們需要的NG-單擊要綁定到名爲menuClicked的方法。


一般我們使用{{}}當我們要計算表達式,並與屬性打交道時,我們並不總是需要使用{{}},因爲他們都在幕後評估許多情況下。

簡單提示當需要{{}}時,經驗法則是將其視爲.ToString()-方法的包裝。將表達式轉換爲字符串是否有意義,使用{{}}也是如此。 (任何計數器例子都非常受歡迎)

+0

謝謝你的詳細答案,這是有道理的。對於使用變量而不是字面值的ng類,它也是正確的。 –