need help with this error: Uncaught Typeerror: Cannot read Property 'push' of null Vue.methods.addPedido (Anonymous Function)

Asked

Viewed 375 times

0

Problem

When will I call the function addPedido with the v-on:click="addPedido" Vue.js error Uncaught Typeerror: Cannot read Property 'push' of null and presented could not identify the urgent need for help!

the code

document.addEventListener("deviceready",onDeviceReady,false);
function onDeviceReady(){
var vm = new Vue({
        el: '#app',
        data:{
            salgados: [],
            doces: [],
            bebidas:[],
            pedido: {},
            pedidos: []
        },
        methods:{
            sync:function(){
                $.ajax({
                    dataType: 'json',
                    url: 'http://192.168.0.100/conect/salgados.php',
                    success:function(dados){
                        localStorage.setItem('salgados',JSON.stringify(dados));
                        vm.setSalgados();
                    },
                    error:function(){
                        alert("ocorreu um erro durante a conexão com o servidor!");
                    }
            });
            $.ajax({
                dataType: 'json',
                url: 'http://192.168.0.100/conect/doces.php',
                success:function(dados){
                    localStorage.setItem('doces',JSON.stringify(dados));
                    vm.setDoces();
                },
                error:function(){
                    alert("ocorreu um erro durante a conexão com o servidor!");
                }
        });
        $.ajax({
            dataType: 'json',
            url: 'http://192.168.0.100/conect/bebidas.php',
            success:function(dados){
                localStorage.setItem('bebidas',JSON.stringify(dados));
                vm.setBebidas();
            },
            error:function(){
                alert("ocorreu um erro durante a conexão com o servidor!");
            }
    });

        },
        setSalgados:function(){
            this.salgados = JSON.parse(localStorage.getItem('salgados'));
            console.log(this.salgados);
        },
        setDoces:function(){
            this.doces = JSON.parse(localStorage.getItem('doces'));
            console.log(this.doces);
        },
        setBebidas:function(){
            this.bebidas = JSON.parse(localStorage.getItem('bebidas'));
            console.log(this.bebidas);
        },
        setPedidos:function(){
            this.pedidos = JSON.parse(localStorage.getItem('pedidos'));
            console.log(this.bebidas);
        },
        addPedido:function(){
            this.pedidos.push(this.pedido);
            localStorage.setItem('pedidos', JSON.stringify(this.pedidos));
            this.pedido = {};
            alert("Pedido enviado!")
        },
        removePedido:function(index){
            this.pedidos.splice(index,1);
            localStorage.setItem('pedidos', JSON.stringify(this.pedidos));
            alert("Pedido Excluído!")
        },
    },
    ready:function(){
     this.setSalgados();
         this.setDoces();
         this.setBebidas();
         this.setPedidos();
        }
    });
}

1 answer

0


Solution

For me to solve the problem I had to array because it was being pushed to a non-existent.

I added the line

this.pedidos = this.pedidos || [];

Upshot:

addPedido:function(){
                this.pedidos = this.pedidos || [];
                this.pedidos.push(this.pedido);
                localStorage.setItem('pedidos', JSON.stringify(this.pedidos));
                this.pedido = {};
                alert("Pedido enviado!")

Browser other questions tagged

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