javascript - 为什么 ng-repeat 内的 ng-class 中的这个 Angular 表达式总是被视为 true?

标签 javascript angularjs data-binding

我无法理解这个问题。

我正在显示 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/

相关文章:

javascript - 无法将 eval() 与 Angular 一起使用

javascript - ng-if 检查数组是否为空

javascript - 当从指令更新值时,不会触发 $rootScope 上的 Angularjs $watchCollection

forms - 如何为复杂的 React 表单实现数据绑定(bind)

c# - WPF MessageBox 取消复选框检查

wpf - 如何将工厂用于DataGrid.CanUserAddRows = true

javascript - jquery mobile - 移动设备上的 keyup keydown

javascript - 是否有已知的算法来检测确保形状连续性所需的像素?

php - 将变量传递到 php 文件时出现问题

javascript - 通过 Jquery 将图像添加到 Canvas