2017-02-27 2 views
0

Angular js Push-Array funktioniert nicht in Schaltergehäuse nurAngularJS Array Push arbeitet nicht in switch-Anweisung

vm.saveModalData = function(title) {    
     if (!$scope.parentCtrl.docsList[vm.newDocObj.document_category]){ 
      $scope.parentCtrl.docsList[vm.newDocObj.document_category] = []; 
     } 
     if(!title){ 
     title = vm.docFileName; 
     $scope.parentCtrl.docsList[vm.newDocObj.document_category].push(vm.docFileName); 
     } else { 
      $scope.parentCtrl.docsList[vm.newDocObj.document_category].push(title); 
     } 
     var doc_obj = {}; 
     doc_obj.title = title; 
     doc_obj.type = appConstants.DOCUMENT_CATEGORY[selectedCategory]; 
     doc_obj.data = vm.newDocObj.document; 
     switch(selectedCategory) { 
      case 'PAN': 
      $scope.parentCtrl.completeDetails.documents.push(doc_obj); 
      $scope.parentCtrl.completeDetails.pan_document = true; 
      $scope.parentCtrl.tabsList[$scope.parentCtrl.activeTab+1].enabled=true; 
      $scope.parentCtrl.tabsList[$scope.parentCtrl.activeTab+2].enabled=true; 
      break; 
      case 'Aadhaar': 
      $scope.parentCtrl.completeDetails.documents.push(doc_obj); 
      $scope.parentCtrl.completeDetails.aadhar_document = true; 
      $scope.parentCtrl.tabsList[$scope.parentCtrl.activeTab+1].enabled=true; 
      $scope.parentCtrl.tabsList[$scope.parentCtrl.activeTab+2].enabled=true; 
      break; 
      case 'Driving License': 
      $scope.parentCtrl.completeDetails.documents.push(doc_obj); 
      $scope.parentCtrl.completeDetails.driving_license_document = true; 
      $scope.parentCtrl.tabsList[$scope.parentCtrl.activeTab+1].enabled=true; 
      $scope.parentCtrl.tabsList[$scope.parentCtrl.activeTab+2].enabled=true; 
      break; 
      case 'Passport': 
      $scope.parentCtrl.completeDetails.documents.push(doc_obj); 
      $scope.parentCtrl.completeDetails.passport_document = true; 
      $scope.parentCtrl.tabsList[$scope.parentCtrl.activeTab+1].enabled=true; 
      $scope.parentCtrl.tabsList[$scope.parentCtrl.activeTab+2].enabled=true; 
      break; 
      case 'Voter Id': 
      $scope.parentCtrl.completeDetails.documents.push(doc_obj); 
      $scope.parentCtrl.completeDetails.voter_id_document = true; 
      $scope.parentCtrl.tabsList[$scope.parentCtrl.activeTab+1].enabled=true; 
      $scope.parentCtrl.tabsList[$scope.parentCtrl.activeTab+2].enabled=true; 
      break; 
      case 'Company IT Returns': 
      $scope.parentCtrl.completeDetails.documents.push(doc_obj); 
      break; 
      case 'Company PAN': 
      $scope.parentCtrl.completeDetails.documents.push(doc_obj); 
      break; 
      case 'ITR/VAT Returns/ST Returns': 
      $scope.parentCtrl.completeDetails.documents.push(doc_obj); 
      break; 
      case 'Other': 
      $scope.parentCtrl.completeDetails.documents.push(doc_obj); 
      break; 
      default: 
      break; 
     } 

     vm.closeModal(); 
     } 

Wie zuletzt hinzugefügte Element aktualisieren dieses Problem zu beheben?

Ich versuche, das erste Dokument hinzuzufügen es in Array hinzugefügt, dann habe ich ein weiteres Dokument hinzugefügt, aber es entfernen vorhandene und fügen Sie als neues hinzu.

+0

haben Sie in der Konsole einen Fehler hat? –

+0

Kein Fehler, wenn ich noch einen vorherigen Artikel entferne und einen neuen aktualisiere – Develop

+0

$ scope.parentCtrl.completeDetails.documents = []; Ich denke, dein Array ist beim Hochladen jedes Mal leer. –

Antwort

-1

Try this,

Sie docCtrl.openAddDocModal (doc) Funktion aufrufen, während jedes Mal von Document hinzufügen. Innerhalb dieser Funktion haben Sie nur Ihr Array initialisiert.

$scope.parentCtrl.completeDetails.documents = []; 

so dass jedes Mal, wenn es mit leeren reinitialisiert wird.

diesen Code Zeile aus der Seite des $ uibModal.open() hinzufügen, empfohlen hinzufügen unter $scope.arr = [];

hoffe, es funktioniert ...

+0

@Develop wenn möglich, können Sie eine Geige für diesen Code machen? – limsha

+0

Können Sie mir bitte sagen, was ich tun muss? Soll ich das entfernen oder was $ scope.parentCtrl.completeDetails.documents = []; – Develop

+0

Ja, Ihr Array Initialisierungsort ist falsch .. Muss überprüft werden, wo wir ihn richtig initialisieren müssen. Mach eine Geige und teile den Link, um es zu reparieren. – limsha

1

Deklarieren Sie Ihr Array im übergeordneten Controller und verwenden Sie $ emit für $ on, um Daten zwischen dem untergeordneten Controller und dem übergeordneten Controller zu übergeben. Versuchen Sie wie folgt.

function docLpController($scope, $q, appConstants, $uibModal, utils) { 
    var vm = this; 
$scope.parentCtrl = $scope.$parent.finwizzCtrl; 

$scope.parentCtrl.completeDetails.documents = []; // declared

$scope.$on('sendData', function (event, data) { 
     $scope.parentCtrl.completeDetails.documents.push(data); 
    }); 

vm.saveModalData = function(title){ 
     $scope.$emit('sendData', doc_obj); 
} 
Verwandte Themen