三類 ng-ng 表示式

Angular 支援 ng-class 指令中的三種表示式。

1.字串

<span ng-class="MyClass">Sample Text</span>

指定求值為字串的表示式會告訴 Angular 將其視為$ scope 變數。Angular 將檢查$ scope 並查詢名為 MyClass 的變數。MyClass 中包含的任何文字都將成為應用於此 <span> 的實際類名。你可以通過用空格分隔每個類來指定多個類。

在你的控制器中,你可能有一個如下所示的定義:

$scope.MyClass = "bold-red deleted error";

Angular 將評估表示式 MyClass 並找到$ scope 定義。它將把“bold-red”,deletederror 三個類應用於 <span> 元素。

以這種方式指定類可以讓你輕鬆更改控制器中的類定義。例如,你可能需要根據其他使用者互動或從伺服器載入的新資料更改類。此外,如果要評估很多表示式,可以在定義 $scope 變數中類的最終列表的函式中執行此操作。這比嘗試將許多評估壓縮到 HTML 模板中的 ng-class 屬性更容易。

2.物件

這是使用 ng-class 定義類的最常用方法,因為它可以輕鬆地指定用於確定要使用哪個類的計算。

指定包含鍵值對的物件。關鍵是如果值(條件)計算為 true,將應用的類名。

<style>
    .red { color: red; font-weight: bold; }
    .blue { color: blue; }
    .green { color: green; }
    .highlighted { background-color: yellow; color: black; }
</style>

<span ng-class="{ red: ShowRed, blue: ShowBlue, green: ShowGreen, highlighted: IsHighlighted }">Sample Text</span>

<div>Red: <input type="checkbox" ng-model="ShowRed"></div>
<div>Green: <input type="checkbox" ng-model="ShowGreen"></div>
<div>Blue: <input type="checkbox" ng-model="ShowBlue"></div>
<div>Highlight: <input type="checkbox" ng-model="IsHighlighted"></div>

3.陣列

求值為陣列的表示式允許你使用字串組合 (請參閱上面的#1)和條件物件 (上面的#2)。

<style>
    .bold { font-weight: bold; }
    .strike { text-decoration: line-through; }
    .orange { color: orange; }
</style>

<p ng-class="[ UserStyle, {orange: warning} ]">Array of Both Expression Types</p>
<input ng-model="UserStyle" placeholder="Type 'bold' and/or 'strike'"><br>
<label><input type="checkbox" ng-model="warning"> warning (apply "orange" class)</label>

這將建立一個繫結到範圍變數 UserStyle 的文字輸入欄位,該欄位允許使用者鍵入任何類名。這些將在使用者輸入時動態應用於 <p> 元素。此外,使用者可以單擊與 warning 範圍變數資料繫結的核取方塊。這也將動態應用於 <p> 元素。