使用对象注释样式时,Angularjs ng-class不会更新

时间:2015-01-21 14:34:21

标签: angularjs ng-class

我刚刚注意到在ng-class中使用object时,某些东西在Angular中不起作用(或者它不像我预期的那样起作用)。

我期待什么?

更改对象中属性的名称时,该类应相应更新。

我尝试了什么?

我发现当我使用对象样式注释时 ng-class="{obj.prop: testExpression}"obj.prop更改(表达式保持返回TRUE)ng-class中的值发生了更改,但class属性中的值却没有。


区别在于[不工作]:

<tr ng-repeat="user in users" ng-class="{ {{user.genre}}: true}">

和[工作]:

<tr ng-repeat="user in users" ng-class="user.genre">


在这里看一个plunkr:

http://plnkr.co/edit/149ba2WQ5RK5XqLmWQWK?p=preview


问题是我需要使用对象注释才能禁用该类。

我做错了什么或者我误解了Angular?
还是第三种解决方案?

2 个答案:

答案 0 :(得分:1)

简而言之,{ {{user.genre}}: true}不是正确的angularjs expression

要获得解决方案,请尝试ng-class="getClass(user.genre)"

并在getClass函数中执行任何操作

example

答案 1 :(得分:0)

您正在尝试在此处评估对象,因此对于具有实际(真实)值的每个对象的键值对,相应的键将用作类名。如果您有单个参数,则必须使用:

<tr ng-repeat="user in users" ng-class="user.genre: true">

如果有多个参数,您必须使用:

<p ng-class="{strike: deleted, bold: important, red: error}">