2017-06-07 28 views
0

オブジェクトの配列がスコープ($scope.contracts)にあります。私の機能を実行するとき、私は契約をパスします。 $scope.contractsを繰り返して、同じ.CONT_ORDNOを持つものを探してみたいです。それから私は、渡された契約には、この契約を設定します。

$scope.mergeContract = function (contractThatsReplaced) {//clicked 2nd new 
     angular.forEach($scope.contracts, function (con) { 
      if (con.CONT_ORDNO == contractThatsReplaced.CONT_ORDNO) { 
       con = $scope.contractToMerge; 
      } 
     }); 
    }; 

ここで私はそれをやろうとしている、それは私が唯一の詐欺変数が変更されたことを除きたいすべてのもの、中にアレイ位置の実際の契約を行います$scope.contractsは更新されていません。それはどうすればわかりますか?

注意契約を削除して置き換えたくないので、更新したいと思います。

編集:if文を2つ(==)に更新しました。これで修正されるわけではありません。コン変数を正しく設定するだけで、配列の場所は$scope.contractsではありません。

答えて

2

ローカル変数のみを変更した場合における必要性==。代わりにこれを試してみてください:

$scope.mergeContract = function (contractThatsReplaced) {//clicked 2nd new 
    angular.forEach($scope.contracts, function (con, i) { 
     if (con.CONT_ORDNO == contractThatsReplaced.CONT_ORDNO) { 
      $scope.contracts[i] = $scope.contractToMerge; 
     } 
    }); 
}; 

はまた、あなたがif文で===を変更する必要があります。

1

conに割り当て条件が

if (con.CONT_ORDNO == contractThatsReplaced.CONT_ORDNO) { 
+0

if文が内部で壊れていましたが、これによって変更があるかどうかを確認します。 –

+0

=割り当てを意味します。 ==と===は比較と正確な比較を意味します(つまり型も比較されます)。 – nadavvadan

+0

これは効果がありません。それでも、$ scope.contracts配列の場所ではなく、con変数だけが設定されています。 –

関連する問題