2014-11-26 5 views
0

에서 개체를 제거내가 다음 코드 한 배열

app.controller('modalController', function($scope, $http,$modalInstance, $rootScope, items){ 

    // Get info 
    $http.post('/ajax/bundle', {'items':items}).success(function(data){ 
     $scope.info = data['info']; 
    }); 

    // [BUTTON] Add Bundle 
    $scope.selectBundle = function() { 

     // Push the info to the cart 
     $rootScope.cart.push($scope.info); 
     // simplified info 
     $rootScope.selectedBundle.push(items) 
     // Close modal 
     $modalInstance.close(); 
    } 

    // [BUTTON] Remove bundle 
    $scope.removeBundle = function() { 
     // Run all bundles 
     angular.forEach($rootScope.selectedBundle,function(value, key){ 
      // Exists 
      if (angular.equals(value,items)) { 
       // Remove simplified 
       $rootScope.selectedBundle.splice($rootScope.selectedBundle.indexOf(value), 1); 
       // remove form cart 
       // $rootScope.cart.splice($rootScope.cart.indexOf($scope.info), 1); 
      } 
     }); 

     // Close modal 
     $modalInstance.close(); 
    } 
}); 

내가 사용하는 경우 : 내가 $에서 사용할 때

$ scope.selectBundle에서
console.log($rootScope.cart); 
console.log($scope.dados); 
console.log($rootScope.cart.indexOf($scope.dados)); 

, 지금 정확한 위치

을 반환 scope.removeBundle, 항상 -1을 반환합니다 (찾을 수 없음)

누군가가 도와 줄 수 있습니까?

+0

는 경우 항목의 값 (angular.equals (값, 항목)) 어떤 경우? – SoluableNonagon

+0

items = [묶음, 두께, 등급, 대구, nbloco]; – PGz

답변

0

그냥 배열이 아니십니까? 왜 그냥 비우지 않는거야?

// [BUTTON] Remove bundle 
$scope.removeBundle = function() { 
    $rootScope.selectedBundle = []; 
    $modalInstance.close(); 
} 

2 받아 : 당신은 value의 인덱스를 검색 할 필요가 없습니다 - 그것은 angular.forEach에 의해 제공됩니다. 오브젝트 당신의 GET key을 반복하지만, 배열하여 GET index

$scope.removeBundle = function() { 
    angular.forEach($rootScope.selectedBundle,function(value, index){ 
     $rootScope.selectedBundle.splice(index, 1); 
    }); 

    $modalInstance.close(); 

}에 대한

+0

을보십시오. 배열 하나만 제거하고 싶습니다. – PGz

+0

제공 한 코드에서 정확하게 삭제하려는 것이 무엇인지 이해하기 어렵습니다. console.log 예제는 명확성을 추가하지 않습니다. 그들은 혼란 스럽습니다 – Konstantin

+0

이 http : //jsfiddle.net/hqypngej/7/...을 보지 마십시오. 올바르게 제거하지 마십시오 – PGz

0

아마도 평등 기능이 올바르지 않습니까? jsFiddle 또는 Plunker를 만들 수 있습니까? 그 동안 제거하고자하는 것을 다음과 같이 호출 함수에 전달하십시오.

// [BUTTON] Remove bundle 
$scope.removeBundle = function(someItemToRemove) { 
    console.log(someItemToRemove); // pass item to remove 
    angular.forEach($rootScope.selectedBundle, function(value, key){ 
     // Exists 
     if (value === someItemToRemove) { 
      $rootScope.selectedBundle.splice($rootScope.selectedBundle.indexOf(value), 1); 
     } 
    }); 

    // Close modal 
    $modalInstance.close(); 
} 
+0

예 : http://jsfiddle.net/hqypngej/5/ – PGz

+0

번들 757을 제거하면 ... 선택한 번들이 올바르게 제거되지만 카트가 올바르게 제거되지 않습니다. – PGz

+0

http://jsfiddle.net/hqypngej/7/ 공백으로 둘 수 없기 때문에이 – PGz