我刚刚注意到在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?
还是第三种解决方案?
答案 0 :(得分:1)
简而言之,{ {{user.genre}}: true}
不是正确的angularjs expression
要获得解决方案,请尝试ng-class="getClass(user.genre)"
并在getClass函数中执行任何操作
答案 1 :(得分:0)
您正在尝试在此处评估对象,因此对于具有实际(真实)值的每个对象的键值对,相应的键将用作类名。如果您有单个参数,则必须使用:
<tr ng-repeat="user in users" ng-class="user.genre: true">
如果有多个参数,您必须使用:
<p ng-class="{strike: deleted, bold: important, red: error}">