2017-02-27 42 views
0

角JS推陣列不是開關情況下,更新最後添加的元素只工作angularjs陣推不在switch語句工作

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(); 
     } 

如何解決這個問題?

我嘗試添加它添加到數組中的第一個文檔,然後我添加了一個文檔,但刪除了現有的並添加爲新的文檔。

+0

做你有控制檯的任何錯誤? –

+0

沒有錯誤,如果我上傳一個更多的前一個刪除和新的更新 – Develop

+0

$ scope.parentCtrl.completeDetails.documents = [];我認爲每次上傳時你的數組都是空的。 –

回答

-1

試試這個,

要調用docCtrl.openAddDocModal(DOC)功能,同時增加每個文件的時間增加。在那個函數裏面,只有你已經初始化了你的數組。

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

這樣每次它都會被重新初始化爲空。

添加該代碼行了$ uibModal.open()的一側,推薦下面添加$scope.arr = [];

希望它會工作...

+0

@開發如果可能的話,你可以爲這個代碼做一個小提琴嗎? – limsha

+0

你能告訴我我需要做什麼嗎?我應該刪除這個或$ scope.parentCtrl.completeDetails.documents = []; – Develop

+0

是的,你的數組初始化位置是錯誤的。需要檢查我們必須正確初始化它的位置。小提琴和分享鏈接將修復它。 – limsha

1

在父控制器中聲明你的數組,並在$ on上使用$ emit來在子控制器之間傳遞數據。嘗試如下。

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); 
}