javascript - Angular ng-if 子句不能双向工作

标签 javascript angularjs angularjs-ng-if

我在表格中显示 json,如下所示:

<tr ng-repeat="room in allRooms | orderBy: 'OpenTime'">

其中 allRooms 包含这样的 json 对象:

{
  "Name": "Room five",
  "OpenTime": "2016-02-19 00:00:00",
  "Entries": 2,
  "Capacity": 10,
  "Type": "TypeThree"
}

Type 属性可以是五个不同值之一(“typeOne”、“typeTwo”、“TypeThree”等)

我想使用 ng-if 在列中显示按钮,仅当 Type 不是“typeOne”或“typeTwo”时,例如:

<button type="button" ng-if="room.Type != 'typeOne' || room.Type != 'typeTwo'"></button>

这对我来说不起作用,尽管这是我所需要的。

但是,这(尽管它没有达到我的需要)确实有效:

<button type="button" ng-if="room.Type == 'typeOne' || room.Type == 'typeTwo'"></button>

所以我想知道为什么第二个 ng-if 可以正常工作,但第一个却不能,而两者之间唯一的区别是使用等于或不等于运算符?

最佳答案

问题出在你的逻辑上。在不知道 allRooms 数据中包含哪些内容的情况下,我可以通过使用数字来最好地说明为什么第一个 if 语句很奇怪。我们假设 if 语句如下:

if (a !== 1 || a !== 2)

if 语句永远为真。不可能是其他情况,因为如果值是 1,它就不是 2,如果是 2,它就不是 1。因此第一个 if 语句的问题在于它总是评估为 true,而绝不会为 false。

您可能想要的是与此等效的内容:

if (a !== 1 && a !== 2)

在这种情况下,if 语句对于小于 1 和大于 2 的整数将通过,对于 1 或 2 则失败。事实上,它对于任何值(无论是否为整数)都会通过!

关于javascript - Angular ng-if 子句不能双向工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35422559/

相关文章:

angularjs - Angular ng-if 仍在运行

javascript - a4j :jsfunction vs calling method directly from javascript

javascript - 从视频文件中提取音频

unit-testing - 指令内的单元测试指令

javascript - 如何获得嵌套的 ng-if 触发?

javascript - 在这种情况下如何使用 ng-if 或其他表达式更改文本?

javascript - 使用 Redux Reducer 的 Immunity Helper 迭代数组并更改特定属性

javascript - JQuery-DataTables-ColumnFilter 过滤问题

javascript - 在 angularjs 中使用 wijmo 事件日历

angularjs - 如何通过拦截器向AngularJS中的http请求添加新的 header ?