2015-11-02 45 views
1

我不知道,如果它現在是爲它的緣故,但我堅持與AngularJS文檔中聲明:angularjs納克級不工作時表達=數組對象和字符串

https://docs.angularjs.org/api/ng/directive/ngClass

「...如果表達式求值爲一個數組,則數組中的每個元素都應該是類型1中的字符串,或者是類型2中的對象。這意味着您可以將數組中的字符串和對象混合在一起給你更多控制什麼CSS類出現...「

"...<p ng-class="[style4, {orange: warning}]">Using Array and Map Syntax</p>..." 

如果你在http://jsfiddle.net/angelinena/9p4k4wnx/5/上看到我的例子,它可以在所有組合中工作,但不能作爲其中包含對象和字符串的數組。

<p><button class="btn btn-default" ng-click="conditionlead=true; classname='text-info'">Both 2</button></p> 
<p ng-class="[{ 'lead': conditionlead == true }, classname ]">Classes applied as array with object and string</p> 

你能告訴我我做錯了什麼嗎?將非常感激。

回答

2

隨着對象的數組,你需要評估你自己的表達(如果你不使用的角度1.4+),假設warning持有true值,你可以這樣做。

ng-class="[style4, {true: 'orange'}[warning]]" 

或者只是使用ng級和class的混合。即

<p class="{{style4}}" ng-class="{orange: warning}"> 

你可能指的是最新的文檔(1.4+)和使用的角度舊版本。您可以將angular的版本升級到至少1.4或手動評估表達式。

older documentation states

如果表達式的計算結果爲一個陣列,所述陣列的每個元素應該是一個字符串,它是一個或多個空間分隔的類名。

+0

你能告訴我什麼ng-class =「[style4,{true:'orange'} [warning]]」對我的例子意味着什麼? – Anja

+0

@Anja你的情況是什麼?如果警告值爲真,假,我的例子將工作。什麼版本的角你使用的BTW。對不起,我無法訪問小提琴 – PSL

+0

嘗試ng-class =「[{true:'lead'} [conditionlead == true],classname]」。有用。大。你能告訴我爲什麼嗎? – Anja