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

Angularjs ng-class not updating when using object annotation style

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

我期待什么?

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

我尝试了什么?

我发现当我使用像 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


问题是我需要使用对象注释来禁用 class。

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

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

对于您的解决方案,请尝试 ng-class="getClass(user.genre)"

并在 getClass 函数中做任何你想做的事

example

您正在尝试在此处评估一个对象,因此对于每个具有真实(真实)值的对象键值对,相应的键用作 class 名称。如果你只有一个参数,你必须像这样使用:

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

如果有多个参数,你必须像这样使用:

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