我正坐在一个试图解决问题的问题上然后意外地做了一些有用的事情! :)
但我不知道它为什么会起作用?
如果有人能向我解释,我将不胜感激。
我想要做的是:使用Id值来确定按钮是否应该显示,例如:
如果应显示Id == 1按钮。
如果Id> = 2按钮应隐藏。
我还有另一个事件,我手动切换ID,并在更改值时正确显示/隐藏按钮。
HTML
让我感到困惑的是ng-show="S == ph[0].PhaseId"
,因为在我的解释中,我说应该用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>
的Javascript
$scope.showMe = function()
{
$scope.S = true;
}
答案 0 :(得分:2)
根据经验,只需测试放在ng-show
(或ng-if
或ng-hide
)中的确切代码,并验证在某种情况下评估为{{1} }。在true
$scope.S = true
的情况下,表达式S == ph[0].PhaseId
评估为true
。为什么?由于==
与其他语言的工作方式略有不同,因此您可能需要===
。
例如,true == 1;
评估为true
,但true === 1;
评估为false
。 Here更好的参考。
尝试使用==
===
答案 1 :(得分:0)
我没有准确地提出您的问题,但查看查询,似乎因为您最初调用showMe()
,您的bool S
的值将变为true
。现在对于1==true
,对于任何其他将返回false的值,它将返回true。因此,当id
为1时,它会显示出来,并且会为任何其他值隐藏。
答案 2 :(得分:0)
问题是你正在使用非严格比较('==')并且没有比较值的类型。 true值是1(基本上),所以true == 1将返回true,而true == 2将返回false。这是一个非常简短的解释,但我就是这样看的: - )
答案 3 :(得分:-1)
只需在ng-show中使用以下内容即可。当值为1时,它显示否则隐藏。
ng-show="ph[0].PhaseId"