2017-11-08 6 views
0

forEachで2つの反復値を比較しようとしていますが、動作しません。すべての場合において、有効であるにもかかわらず条件が満たされる。 私はしばらく何も探していませんでした。 誰かが私を助けることができますか?参考angular.forEachで条件が機能しません

angular.forEach($scope.shifts, function(value, key){ 
         if(value.shift_id == $scope.shift){ 
          $scope.selectedShift = $scope.shift; 
         }else{ 
          $scope.selectedShift = value.shift_id; 
         }        
        }); 

$scope.shifts =

[{ "shift_id": "7", "shift_name": "JuanIlario" }, 
{ "shift_id": "31", "shift_name": "Ruperto" } ] 

$scope.shift =の '7'。

View example code

+1

$ scope.shiftsと$ scope.shift –

+0

** $ scope.shifts ** = [{ "shift_id": "7"、 "shift_name": "JuanIlario" }が何であるかを追加してください、 { "shift_id": "31"、 "shift_name": "Ruperto" }] ** $のscope.shift ** = [{ "shift_id": "7"、 "shift_name": "JuanIlario" }、 { "shift_id": "31"、 "shift_name": "Ruperto" } ] 2つは同じです –

+0

「条件が満たされた」とはどういう意味ですか、条件が「真」であることを意味しますので、「then」部分が実行されますか?そして、「有効であるにもかかわらず」とはどういう意味ですか?あなたは '間違っているにもかかわらず? – MondKin

答えて

0

問題は$scope.shiftが配列であるが、value.shift_idが文字列であることです。したがって、==との比較は、あなたが期待することをしません。

私はあなたがvalue.shift_idに等しいshift_idを持っている$scope.shiftの要素があるかどうかを知りたいと想像。その場合、配列$scope.shiftをトラバースする必要があります。すべての要素のshift_idvalue.shift_idを比較します。

また、$scope.selectedShiftに格納されている値を上書きしているので、最後の唯一の反復は最後ですが、私はそれがあなたが望むものだとは思っていませんが、あなたにもっと良い解決策を与えることができます。

+0

。配列内の最後の項目に基づいて常に設定されます。 – charlietfl

+1

はそれを正確に更新していました。 – MondKin

+0

もしそうなら、ここでそれを見ることができます[link code example](http://plnkr.co/edit/cUAgZVBNt7l2rDQ1psvV?p=preview) –

関連する問題