Typeerror: Cannot read Property 'map' of Undefined

Asked

Viewed 378 times

0

I do not know why this error occurs:

Typeerror: Cannot read Property 'map' of Undefined

Follows code:

var app = angular.module('Teste');
app.controller('testeController', ['$scope', '$http',
    function ($scope, $http) {

        $scope.formulario = {};
        $scope.isLoading = false;
        $scope.tipos = sema.tipoSimfiscal;
        $scope.municipios = sema.municipios;
        $scope.estados = sema.estados;
        $scope.categoriasProdutos = sema.categoriasProdutos;
        $scope.data = [];
        $scope.municipioDestinos = [];
        $scope.dTableOptions = {
            aoColumns: [
                { "sTitle": "Tipo" },
                { "sTitle": "Nº GF" },
                { "sTitle": "Nº DVPF" },
                { "sTitle": "Remetente" },
                { "sTitle": "Destinatário" },
                { "sTitle": "Situação" },
                { "sTitle": "" }
            ]
        };

        $scope.municipioDestinos = function (form) {
            $http.post('views/transparencia/sistemas/service.aspx/Consultar', {
                estado: form.estado || ''
            }).then(function (success) {
                let data = JSON.parse(success.data.d);
                $scope.data = data;
                $scope.isLoading = false;
                $scope.municipioDestinos = data;
            }, function (error) {
                $scope.isLoading = false;
            });
        };

        $scope.abrirModal = function (id) {
            let item = $scope.data.filter(function (it) { return it.Id == id })[0];
            let produtos = item.Produtos;
            if (item) {
                $('#lblTipo').text(item.Tipo);
                $('#lblNumeroGF').text(item.GfNumero);
                $('#lblNumeroDVPF').text(item.DvpfNumero);
                $('#lblRemetente').text(item.VendedorNome);
                $('#lblDestinatario').text(item.CompradorNome);
                $('#lblSituacao').text(item.SituacaoGfTexto);
                $('#lblClassificacao').text(item.Classificacao);
                $('#lblDataEmissao').text(item.EmissaoData);
                $('#lblConsumidorFinal').text(item.ConsumidorFinal);
                if (item.Exportacao == 0)
                    item.Exportacao = "";
                $('#lblExportacao').text(item.Exportacao);
                $('#lblEmbarque').text(item.Embarque);
                $('#lblCodigoBarras').text(item.CodigoDeBarra);
                $('#lblCpfCnpjVendedor').text(item.VendedorCpfCnpj);
                $('#lblCpfCnpjComprador').text(item.CompradorCpfCnpj);
                $('#lblMunicipioOrigem').text(item.VendedorMunicipio);
                $('#lblMunicipioDestino').text(item.MunicipioDestino);
                $('.tabelaProdutos tbody').html("");
                for (var i = 0; i < produtos.length; i++) {
                    $('.tabelaProdutos tbody').append("<tr><td><span>" + produtos[i].Essencia + "</span></td><td><span>" + produtos[i].Classificacao + "</span></td><td><span>" + produtos[i].Quantidade + "</span></td><td><span>" + produtos[i].Produto + "</span></td><td><span>" + produtos[i].UnidadeMedida + "</span></td></tr > ");
                }
                $('#modalDados').modal().show();

            } else {
                alert('Item não encontrado');
            }
        };

        $scope.consultar = function (form) {

            if (!form.tipo) {
                alert('Informe o tipo de GF');
                return;
            }
            if (!form.status) {
                alert('Informe o Status');
                return;
            }
            if (!form.codigoDeBarras) {
                if (!form.periodo) {
                    alert('Informe o Período');
                    return;
                }
            }

            $scope.isLoading = true;

            $http.post('views/transparencia/sistemas/service.aspx/SISFLORA_ConsultarDadosGF', {
                municipio: form.municipio || '',
                municipioDestino: form.municipioDestino || '',
                tipo: form.tipo || 0,
                status: form.status || 0,
                codigoDeBarras: form.codigoDeBarras || '',
                numeroGF: form.numeroGF || 0,
                periodo: form.periodo || 0,
                categoria: form.categoria || 0,
                essencia: form.essencia || ''
            }).then(function (success) {
                let data = JSON.parse(success.data.d);
                $scope.data = data;
                $scope.isLoading = false;
                $scope.dTableOptions.aaData = data.Lista.map(it => {
                    return {
                        tipo: it.Tipo,
                        numeroGF: it.GfNumero,
                        numeroDVPF: it.DvpfNumero,
                        remetente: it.VendedorNome + ' / ' + it.VendedorCpfCnpj,
                        destinatario: it.CompradorNome + ' / ' + it.CompradorCpfCnpj,
                        situacao: it.SituacaoGfTexto,
                        download: `<button class="btn btn-default " onclick="angular.element(this).scope().abrirModal('${it.Id}');"><span class="glyphicon glyphicon-eye-open"></span></button></div>`

                    };
                });

            }, function (error) {
                $scope.isLoading = false;
            });
        };

        $scope.exportToJson = function () {
            sema.exportToJson($scope.dTableOptions.aaData, 'flores');
        };

        $scope.exportToCSV = function () {
            $(".buttons-csv").click();
        };
        $scope.exportToPDF = function () {
            $(".buttons-pdf").click();
        };
        $scope.exportToXLS = function () {
            $(".buttons-excel").click();
        };


    }]);
  • 1

    Well, it seems that in the line "$Scope.dTableOptions.aaData = date.Lista.map(it => {", the attribute/Variable 'List' is not being declared anywhere in its code. See if this 'List' really exists, if it exists see if it has value, because the error is accusing that, the ". map" is trying to be used with something undefined.

1 answer

0


The error is on the line $scope.dTableOptions.aaData = data.Lista.map(it => {.

Probably the List attribute, which is returned from your request, does not exist. The method map is a property of Arrays and will only work on them. Make sure that the Lista exists and is an Array.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.