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