2016-03-31 22 views
0

Temel olarak, kendo grid varsayılan verileri için dataSource, selVal'dir, eğer selval herhangi bir tuş dtoVal ile eşleşiyorsa, selVa'dan her şeyi silmek istiyorum, aşağıdaki kodla, selVal elemanlarını diziden silmemesine olanak sağlanabilir. Herhangi bir fikir ?Bir anahtar eşleştiğinde dizi öğesi nasıl kaldırılır?

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

Eğer selVal her şeyi silmek demek, her şeyi (dizi boşaltın) ya da dtoVal maçları sadece şeyler demek deneyin? – SmokeyPHP

+0

dizilimi boş – hussain

+0

Boş $ $ dizisi.electedOwners 'dizisini boşaltmak ve '$ scope.controlDTO.controlOwners' değerini $ scope.selectedOwners' – hussain

cevap

0

yerine for döngüsü kullanmak angular.forEach kullanmak daha iyi olacaktır. selval herhangi bir anahtar dtoVal ile eşleşen ise Ayrıca ben Selva

itibaren Ama !== ile kontrol ediyoruz döngü içinde herşeyi silmek istediğiniz

söyledi. Hangisinin sizin gereksiniminiz olduğunu bilmiyorum. Ama bunu yaparken deneyebilirsiniz:

$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

Evet eğer değerler eşleşiyorsa o zaman koşul doğru yapmak istiyorum, cevabınız için teşekkürler yanıtınız ilk kez çalıştığım için ama daha fazlasını eklediğimde kullanıcılar ve bunun yerine kaydetme üzerine tıklayarak kaydetme hala $ $ data.electedOwners'nın üzerindeki verileri gösteren $ scope.controlDTO.controlOwners'da tam olarak ne olduğunu bilmiyorum burada ne olduğunu bilemiyorum – hussain

+0

Bu alanın dışında neler oluyor bilmiyorum kod böylece kafa karıştırıcı. Çözdüğünüz zaman bize bildirin. – Roy

0

bu

$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

Performansı artırmak için ters dizi, çünkü her seferinde uzunluğa gerek yok – Sathya

İlgili konular