2016-03-31 9 views
0

基本的に剣道グリッドのデフォルトデータのdataSourceはselValです。selvalからのキーがdtoValと一致する場合は、 をselVaからすべて削除します。配列からselVal要素を削除しないでください。何か案が ?1つのキーが一致する場合、配列要素を削除するにはどうすればよいですか?

ctrl.js

$scope.handleControlOwnerCancel = function(){ 
       this.ctrlOwnerModal.close(); 
       var dtoVal = $scope.controlDTO.controlOwners; 
       var selVal = $scope.selectedOwners; 
       for (var i = 0; i < dtoVal.length; i++) { 
        for (var j=0; j<selVal.length; j++) { 
        if (dtoVal[i].workerKey !== selVal[j].workerKey) { 
        $scope.selectedOwners = $scope.controlDTO.controlOwners; 
        controlOwnersDataSource(); 
        } 
        } 
       } 

      }; 
+0

を試してみてください? – SmokeyPHP

+0

配列を空にします – hussain

+0

'$ scope.selectedOwners'配列を空にして' $ scope.controlDTO.controlOwners'を '$ scope.selectedOwners'の新しい値として設定したい – hussain

答えて

0

forループを使用する代わりにangular.forEachを使用する方がよいでしょう。 SELVALから任意のキーをdtoValとマッチングされている場合はまた、あなたは私がセルバ

からしかし、あなたが!==に確認されているループ内 すべてを削除したい

を言いました。どちらがあなたの必要条件であるかはわかりません。しかし、あなたはこれをやって試すことができます:

$scope.handleControlOwnerCancel = function(){ 
    this.ctrlOwnerModal.close(); 
    //var dtoVal = $scope.controlDTO.controlOwners; 
    //var selVal = $scope.selectedOwners; 
    var match = 0; 
    angular.forEach($scope.selectedOwners, function(val, key){ 
     angular.forEach($scope.controlDTO.controlOwners, function(val2, key2){ 
      if(val.workerKey==val2.workerKey){ 
       match++; 
      } 
     })   
    }) 
    if(match>0){ 
     $scope.selectedOwners = $scope.controlDTO.controlOwners; 
     controlOwnersDataSource(); 
    } 
}; 
+0

値が一致している場合はtrueです。条件を真にしたいのですが、答えが初めてではありますが、ユーザーは '$ scope.selectedOwners'のデータを$ scope.controlDTO.controlOwnersの上に表示してまだ保存していない代わりにキャンセルをクリックしてください。ここで何が起こっているのか分かりません。 – hussain

+0

私はこの領域外で何が起こっているのか分かりません。それは混乱している。もしあなたがそれを解決したら/私たちに知らせてください。 – Roy

0

あなたはSELVALからすべてを削除すると言うとき、あなたはすべてのもの(配列を空にする)またはdtoValに一致するだけのものを意味しています。この

$scope.handleControlOwnerCancel = function(){ 
    this.ctrlOwnerModal.close(); 
    var dtoVal = $scope.controlDTO.controlOwners; 
    var selVal = $scope.selectedOwners; 
    var selValCopy = angular.copy(selVal); 
    for (var i=dtoVal.length-1; i>=0; i--) { 
    for (var j=selVal.length-1; j>=0; j--) { 
     if (dtoVal[i].workerKey === selVal[j].workerKey) { 
     selValCopy.splice(j, 1); 
     } else { 
     $scope.selectedOwners = $scope.controlDTO.controlOwners; 
     controlOwnersDataSource(); 
     } 
    } 
    } 
    selVal = selValCopy; 
}; 
+0

毎回長さを取得する必要がないため、パフォーマンスを向上させるための逆配列 – Sathya

関連する問題