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

时间:2016-02-16 02:21:39

标签: 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属性可以是五个不同的值之一(&#34; typeOne&#34;,&#34; typeTwo&#34;,&#34; TypeThree&#34;等等)

我想使用ng-if来显示列中的按钮,仅当Type不是&#34; typeOne&#34;或&#34; typeTwo&#34;,例如:

<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能够正常工作,但是第一个没有,当两者之间的唯一区别是使用等于或不等于运算符时?

1 个答案:

答案 0 :(得分: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.事实上,它将传递任何值,整数与否!