angularjs ng-class 当表达式 = 包含对象和字符串的数组时不起作用

angularjs ng-class not working when expression = array with object and string

我不知道现在是不是为了它,但我坚持 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>

你能告诉我我做错了什么吗?将不胜感激。

对于对象数组,您需要自己计算表达式(如果您没有使用 angular 1.4+),假设 warning 成立true价值,你可以做到。

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

或者混合使用 ng-class 和 class。即

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

您可能指的是最新文档 (1.4+) 并使用旧版本的 angular。您可以将 angular 的版本升级到至少 1.4 或手动计算表达式。

older documentation states:

If the expression evaluates to an array, each element of the array should be a string that is one or more space-delimited class names.