我无法理解这个问题。
我正在显示 ng-repeat
的对象集合,像这样:
<div ng-repeat="obj in objs">{{obj | json}}</div>
然后,我要申请类(class)current
其中之一<div>
基于它所代表的对象是否是“当前对象”的元素;即,在实践中,是否 obj
指向与另一个作用域变量 current
相同的东西.
我尝试过这个:
<div ng-repeat="obj in objs" ng-class="{current: 'obj == current'}">{{obj | json}}, current: {{obj == current}}</div>
有趣的是:表达式obj == current
在 div 主体中正确评估,并且当 current
的值时,最初对所有这些都为 false范围是null
。但是该类仍然适用于所有这些,尽管它应该依赖于完全相同的表达式。
每当我更改 current
的值时指向另一个对象时,div 内的文本会相应更新,并更改为 true
,但该类始终保持应用状态。
我在这里缺少什么?即使表达式产生 false
,为什么仍应用该类?
要玩它:JSFiddle .
最佳答案
引号导致此操作失败。应改为:
ng-class="{'current': obj == current}"
编辑了您的 JS Fiddle:http://jsfiddle.net/qXgJm/1/
引号导致它始终返回 true,因为字符串是 true
示例: 这将评估为 true,并记录“!!!!”
if ("hello world") {
console.log('!!!!');
}
关于javascript - 为什么 ng-repeat 内的 ng-class 中的这个 Angular 表达式总是被视为 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23682211/