Как передать данные в angularjs foreach внутри foreach - PullRequest
0 голосов
/ 18 января 2019

Я добавил свой код и json, который я хочу зациклить. Я зациклил $scope.data с помощью цикла foreach и нажал на $scope.tempObj, он работает нормально. Но когда я пытаюсь зациклить $scope.data.policyDocumentContentCollection и нажать на $scope.tempObj.nested, появляется консольная ошибка get "Не удается прочитать свойство 'push' of undefine". Могу ли я узнать, как отправить данные 2-го foreach во вложенный массив, который находится в $scope.tempObj.

$scope.data = [
   {
      "policyNo":"DBDP18S016696",
      "renewalNo":"001",
      "endorseNo":"001",
      "productDesc":"TBD",
      "policyDocumentContentCollection":[
         {
            "docType":"Credit Note1"
         },
         {
            "docType":"Tax Invoice1"
         }
      ]
   },
   {
      "policyNo":"DBDP18S016697",
      "renewalNo":"001",
      "endorseNo":"001",
      "productDesc":"TBD",
      "policyDocumentContentCollection":[
         {
            "docType":"Credit Note1"
         },
         {
            "docType":"Tax Invoice1"
         }
      ]
   },
   {
      "policyNo":"DBDP18S016698",
      "renewalNo":"001",
      "endorseNo":"001",
      "productDesc":"TBD",
      "policyDocumentContentCollection":[
         {
            "docType":"Credit Note1"
         },
         {
            "docType":"Tax Invoice1"
         }
      ]
   }
]



$scope.tempObj = [];

                    angular.forEach($scope.data, function (data) {
                        $scope.tempObj.push({
                            'id': data.policyNo,
                            'renewalNo': data.renewalNo,
                            'endorsementNo': data.endorseNo,
                            'product': data.productDesc,
                            'insuredName': data.holderName,
                            'periodOfInsurance': data.fromDate + ' to ' + data.toDate,
                            'nested': []
                        });
                        angular.forEach($scope.data.policyDocumentContentCollection, function (docs) {
                            $scope.tempObj.nested.push({
                                docName: docs.docType
                            })
                        });
                    });

Ответы [ 2 ]

0 голосов
/ 18 января 2019

$scope.tempObj.nested не существует, поскольку $scope.tempObj - это массив объектов. Таким образом, вы должны сначала получить доступ к объекту в определенном массиве index из $scope.tempObj, а затем вставить значение в массив $scope.tempObj[index].nested.

$scope.data = [
   {
      "policyNo":"DBDP18S016696",
      "renewalNo":"001",
      "endorseNo":"001",
      "productDesc":"TBD",
      "policyDocumentContentCollection":[
         {
            "docType":"Credit Note1"
         },
         {
            "docType":"Tax Invoice1"
         }
      ]
   },
   {
      "policyNo":"DBDP18S016697",
      "renewalNo":"001",
      "endorseNo":"001",
      "productDesc":"TBD",
      "policyDocumentContentCollection":[
         {
            "docType":"Credit Note1"
         },
         {
            "docType":"Tax Invoice1"
         }
      ]
   },
   {
      "policyNo":"DBDP18S016698",
      "renewalNo":"001",
      "endorseNo":"001",
      "productDesc":"TBD",
      "policyDocumentContentCollection":[
         {
            "docType":"Credit Note1"
         },
         {
            "docType":"Tax Invoice1"
         }
      ]
   }
]



$scope.tempObj = {};

                    angular.forEach($scope.data, function (data, index) {
                        $scope.tempObj = {
                            'id': data.policyNo,
                            'renewalNo': data.renewalNo,
                            'endorsementNo': data.endorseNo,
                            'product': data.productDesc,
                            'insuredName': data.holderName,
                            'periodOfInsurance': data.fromDate + ' to ' + data.toDate,
                            'nested': []
                        };
                        angular.forEach($scope.data.policyDocumentContentCollection, function (docs) {
                            $scope.tempObj[index].nested.push({
                                docName: docs.docType
                            })
                        });
                    });
j
0 голосов
/ 18 января 2019

Вы можете создать промежуточный объект, чтобы иметь возможность помещать его внутрь текущего элемента. Прямо сейчас вы не можете, потому что вы нажимаете $scope.tempObj.nested, который не существует, существует только $scope.tempObj[index].nested, потому что $scope.tempObj является массивом.

angular.forEach($scope.data, function(data) {
  const element = {
    id: data.policyNo,
    renewalNo: data.renewalNo,
    endorsementNo: data.endorseNo,
    product: data.productDesc,
    insuredName: data.holderName,
    periodOfInsurance: data.fromDate + " to " + data.toDate,
    nested: []
  };

  angular.forEach(data.policyDocumentContentCollection, function(docs) {
    element.nested.push({
      docName: docs.docType
    });
  });

  $scope.tempObj.push(element);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...