2017-10-12 56 views
0

我發出兩個http請求,並且我必須將第二個HTTP調用的響應合併到第一個響應 注意:第二個響應具有每個individualID的數據。所以我嘗試使用angular.forEach函數追加..我無法理解angularjs 1.2 - 將json obj合併到另一個json obj

響應從第一個HTTP請求存儲在$ scope.bobData =============== ====================================

$scope.bobData = { 
     "count": 1, 
     "listOfIndividuals": [{ 
      "individualId": "1234", 
      "firstName": "UAT Michael", 
      "lastName": "Brady", 
      "address1": "4950 Alhambra Valley Rd", 
      "premium": "886.48", 
      "pageNumber": 0, 
      "sortBy": null, 
      "sortOrder": null,  
     }, 
    { 
      "individualId": "1235", 
      "firstName": "Mike", 
      "lastName": "Randy", 
      "address1": "1300 Mission Valley Rd", 
      "premium": "990.00", 
      "pageNumber": 0, 
      "sortBy": null, 
      "sortOrder": null,  
     } 
    ] 
     } 

RESPONSE與第二HTTP請求存儲在$ scope.individualPlanData

$scope.individualPlanData=  { 
      "individualPlanDetails": { 
       "1234": { 
        "planId": "p01", 
        "noOfEnrollees": 0, 
        "officeVisit": null, 
        "genericDrugs": null, 
        "deductible": null, 
        "issuerLogo": null, 
        "issuerName": null, 
        "planName": null, 
        "planType": null 
       }, 
     "1235": { 
        "planId": "p01", 
        "noOfEnrollees": 0, 
        "officeVisit": null, 
        "genericDrugs": null, 
        "deductible": null, 
        "issuerLogo": null, 
        "issuerName": null, 
        "planName": null, 
        "planType": null 
       } 
      } 
     } 
CODE SNIPPET:: 


angular.forEach(vm.bobData, function(obj) { 
       angular.forEach(vm.individualPlanData.individualPlanDetails[key], function (value, key) { 
        obj.officeVisit: value.officeVisit, 
        obj.genericDrugs: value.genericDrugs, 
        obj.deductible: value.deductible, 
        obj.issuerLogo: value.issuerLogo, 
        obj.issuerName: value.issuerName, 
        obj.planName: value.planName, 
        obj.planType: value.planType 
       }) 
      }); 

預期的結果:

$scope.bobData = { 
     "count": 1, 
     "listOfIndividuals": [{ 
      "individualId": "1234", 
      "firstName": "UAT Michael", 
      "lastName": "Brady", 
      "address1": "4950 Alhambra Valley Rd", 
      "premium": "886.48", 
      "pageNumber": 0, 
      "sortBy": null, 
      "sortOrder": null, 
      "1234": { 
        "planId": "p01", 
        "noOfEnrollees": 0, 
        "officeVisit": null, 
        "genericDrugs": null, 
        "deductible": null, 
        "issuerLogo": null, 
        "issuerName": null, 
        "planName": null, 
        "planType": null 
       }, 
       }, 
      { 
      "individualId": "1235", 
      "firstName": "Mike", 
      "lastName": "Randy", 
      "address1": "1300 Mission Valley Rd", 
      "premium": "990.00", 
      "pageNumber": 0, 
      "sortBy": null, 
      "sortOrder": null, 
      "1235": { 
        "planId": "p01", 
        "noOfEnrollees": 0, 
        "officeVisit": null, 
        "genericDrugs": null, 
        "deductible": null, 
        "issuerLogo": null, 
        "issuerName": null, 
        "planName": null, 
        "planType": null 
       } 
      } 

     } 
    ] 

}

回答

0
angular.forEach(bobData.listOfIndividuals, function(response1Value, response1Key) { 
         angular.forEach(response1Value, function(listOfIndividualsValue, listOfIndividualsKey){ 
          if(listOfIndividualsKey === "individualId") { 
           angular.forEach(individualPlanData.individualPlanDetails, function(response2Value, response2Key){ 
            if (listOfIndividualsValue === response2Key) { 
             response1Value.planType = response2Value.planType; 
             response1Value.officeVisit = response2Value.officeVisit; 


            } 
           }); 
          } 
         }); 
        }); 
0

<!DOCTYPE html> 
 
<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 
<body> 
 

 
<div ng-app="myApp" ng-controller="customersCtrl"> 
 

 
<ul> 
 
    <li> 
 
    {{myData}} 
 
    </li> 
 
</ul> 
 
</div> 
 

 
<script> 
 
var app = angular.module('myApp', []); 
 
app.controller('customersCtrl', function($scope, $http) { 
 
    $scope.myData = { 
 
     "count": 1, 
 
     "listOfIndividuals": [{ 
 
      "individualId": "1234", 
 
      "firstName": "UAT Michael", 
 
      "lastName": "Brady", 
 
      "address1": "4950 Alhambra Valley Rd", 
 
      "premium": "886.48", 
 
      "pageNumber": 0, 
 
      "sortBy": null, 
 
      "sortOrder": null,  
 
     }, 
 
    { 
 
      "individualId": "1235", 
 
      "firstName": "Mike", 
 
      "lastName": "Randy", 
 
      "address1": "1300 Mission Valley Rd", 
 
      "premium": "990.00", 
 
      "pageNumber": 0, 
 
      "sortBy": null, 
 
      "sortOrder": null,  
 
     } 
 
    ] 
 
     } 
 
     
 
    var individualPlanData=  { 
 
      "individualPlanDetails": { 
 
       "1234": { 
 
        "planId": "p01", 
 
        "noOfEnrollees": 0, 
 
        "officeVisit": null, 
 
        "genericDrugs": null, 
 
        "deductible": null, 
 
        "issuerLogo": null, 
 
        "issuerName": null, 
 
        "planName": null, 
 
        "planType": null 
 
       }, 
 
     "1235": { 
 
        "planId": "p01", 
 
        "noOfEnrollees": 0, 
 
        "officeVisit": null, 
 
        "genericDrugs": null, 
 
        "deductible": null, 
 
        "issuerLogo": null, 
 
        "issuerName": null, 
 
        "planName": null, 
 
        "planType": null 
 
       } 
 
      } 
 
     } 
 
     
 
     angular.extend($scope.myData, individualPlanData); 
 
    
 
}); 
 
</script> 
 

 
</body> 
 
</html>

For Angular 1.2:嘗試angular.extend(dst, src);

點擊這裏查看詳細說明angular.extend

+0

我使用angularjs 1.2 – dragonfly

+0

看看更新的答案。 – Anonymous

+0

我嘗試過使用擴展和合並。我沒有得到預期的結果http://jsfiddle.net/priyaa2002/Lftttcgc/1/ – dragonfly

相關問題