Javascript Angularjs ng show==Id?

Javascript Angularjs ng show==Id?,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我当时正坐在一个问题上试图解决它,然后意外地做了一些有效的事情!:) 但我不知道为什么它会起作用 如果有人能给我解释一下,我将不胜感激 我想做的是:使用Id值确定按钮是否应显示,如: 如果Id==1,则应显示按钮 如果Id>=2,则应隐藏按钮 还有另一个事件,我手动切换Id,当我更改值时,按钮正确显示/隐藏 HTML 让我吃惊的是,在我的解释中,我说应该用Id来确定。在这种编码中,它不会(在我看来)显示将值与正确Id进行比较的位置 <button ng-if="ph" type="but

我当时正坐在一个问题上试图解决它,然后意外地做了一些有效的事情!:)

但我不知道为什么它会起作用

如果有人能给我解释一下,我将不胜感激

我想做的是:使用Id值确定按钮是否应显示,如:

如果Id==1,则应显示按钮

如果Id>=2,则应隐藏按钮

还有另一个事件,我手动切换Id,当我更改值时,按钮正确显示/隐藏

HTML

让我吃惊的是,在我的解释中,我说应该用Id来确定。在这种编码中,它不会(在我看来)显示将值与正确Id进行比较的位置

 <button ng-if="ph" type="button" class="col button button-small button-dark" ng-init="showMe(ph);" ng-show="S == ph[0].PhaseId">
Check In
</button>

我没有完全理解您的问题,但是查看查询,似乎由于您最初调用了
showMe()
,bool
S
的值将变为
true
。现在对于
1==true
它将返回true,而对于任何其他将返回false的值。因此,当
id
为1时,它会显示出来,并隐藏任何其他值。

根据经验,只需测试放入
ng show
(或
ng if
ng hide
)中的确切代码,并验证在特定条件下计算结果是否为
true
。在这种情况下,使用
$scope.S=true
表达式
S==ph[0]。PhaseId
计算为
true
。为什么?因为
=
的工作原理与其他语言稍有不同,所以这里可能需要
==

例如
true==1计算结果为
true
true==1计算结果为
false
。更好的参考资料


试着用
===
更改
==

问题是您使用的是非严格比较('=='),并且没有比较值的类型。true值是1(基本上),因此true==1将返回true,而true==2将返回false。这是一个非常简单的解释,但我就是这么看的:-)

在ng show中使用以下内容即可。当值为1时显示,否则隐藏

ng-show="ph[0].PhaseId"

如果
ph[0].PhaseId
true
,则它将显示。这有什么复杂的?另外,您也可以这样做:
true==ph[0]。PhaseId
。使用三个
=
s。这是因为
ph[0]。PhaseId
在变化时不是相同的值,它的范围从
1
7
。只有
1
应该为真。在我的编码中没有我说只有
1
应该为真的地方@CST1992非零值将被视为
true
。你应该使用
==
,这是更严格的类型检查,并且会破坏代码。事实上,
==
只检查相等,而
==
同时检查相等和类型,例如
布尔值
。当值为2时会发生什么?这只会在
ph[0]时进行检查。PhaseId
是truthyWhen值!=1、条件为假。自动隐藏不,没有任何东西可以检查1。正如@Naigel所说,当值为2时会发生什么?它会显示出来,因为2是真实的。来展示它。
ng-show="ph[0].PhaseId"