0

我在表格中显示一个 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 可以正常工作,但第一个不能,当两者之间的唯一区别是使用等于或不等于运算符时?

4

1 回答 1

2

这里的问题在于你的逻辑。在不知道 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 则失败。事实上,它会传递任何值,无论是否为整数!

于 2016-02-16T02:30:12.630 回答