AngularJS数组推动在开关语句中不起作用



Angular JS 推动阵列在开关情况下不起作用,它更新了最后添加元素

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

如何解决此问题?

我尝试将其添加到数组中的第一个文档,然后添加了一个文档,但它删除了现有并添加为新文档。

在父控制器中声明您的数组,并在$上使用$ emit on $ on将孩子之间的数据传递到父级控制器。尝试下面的尝试。

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

尝试这个,

您正在调用docctrl.openaddocmodal(doc)函数,同时添加文档的每次添加。在该功能中,只有您已经初始化了数组。

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

,每当它被空重新启动时。

在$ uibmodal.open()的侧面添加此代码行,建议添加以下 $scope.arr = [];

希望它能起作用...

最新更新