2016-04-06 5 views
1

私はそれを理解しようとしている問題に座っていましたが、予期せず何かしたことがありました! :)Angularjs ng-show == Id?

しかし、私はそれがなぜ働いているのか分かりませんか?

誰かが私にそれを説明することができればうれしいです。私がやりたいこと

た:ボタンは次のように表示すべきか否かを判断するためにID値を使用します。id == 1ボタンが表示されなければならない場合

Id> = 2の場合は、ボタンを非表示にする必要があります。

私はIDを手動で切り替える別のイベントがあり、値を変更するとボタンが正しく表示/非表示されます。私の説明では、私はそれがIDがして決定されるべきであると述べ、ので、私をboggles

HTML

事がng-show="S == ph[0].PhaseId"です。このコーディングでは、私の感覚では正しい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

'ph [0] .PhaseId'が' true'の場合、それが表示されます。何がそんなに複雑ですか?また、 'true === ph [0] .PhaseId'を実行することもできます。 '='を3つ使用してください。 – cst1992

+0

'ph [0] .PhaseId'は変更されたときに同じ値ではないので、 '1'から '7'までの範囲です。 '1'だけが真でなければなりません。私のコーディングのどこで「1」だけが真実であるべきだと言うかはどこにもありません。 @ cst1992 –

+0

ゼロ以外の値は 'true'として扱われます。 '==='を使うべきです。厳密な型チェックであり、コードが壊れてしまいます。 – cst1992

答えて

2

ちょうどあなたがng-show(またはng-ifまたはng-hide)の内側に入れて正確なコードをテストし、特定の条件でtrueに評価されていることを確認します。この場合、$scope.S = trueで表現S == ph[0].PhaseIdtrueと評価されます。どうして? ==は他の言語と少し違いますので、おそらくここに===が必要です。

たとえば、true == 1;は、trueと評価されますが、true === 1;は、falseと評価されます。 Hereよりよい参照。

===

+1

実際、 '=='は等価のみをチェックし、 '==='は等価と型の両方をチェックします。 'ブール' – cst1992

+0

それは完全にありがとう! –

0

私は正確にあなたの質問を取得しますが、クエリを見ていなかった、あなたが最初に​​を呼び出していることから、あなたのブールSの値になるだろうと思われtrue1==trueの場合、trueを返し、その他の値はfalseを返します。それで、idが1で他の値のために隠されたときに現れます。経験則として

0

==を変更しようとするところは、非厳密な比較を使用している(「==」)と値の種類が比較されていないことです。真の値は1(基本的に)なので、true == 1はtrueを返し、trueは=falseを返します。それはかなり簡単な説明ですが、これは私がこれを見る方法です:-)

-1

単にng-showで以下を使用してください。値が1の場合は、それが隠れていることを示します。

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

値が2の場合はどうなりますか? – Naigel

+0

これは 'ph [0] .PhaseId'が真実であるかどうかをチェックするだけです –

+0

値が!= 1の場合、条件はfalseです。自動的に隠される – Gurpinder