need help with this error: Uncaught TypeError: Can not read property 'push' of null Vue.methods.addOrder (anonymous function)

0

Problem

When I'm going to call the addPedido function with v-on:click="addPedido" of vue.js the Uncaught TypeError error: Can not read 'push' of null property and I could not identify the urgent problem needing urgent 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();
        }
    });
}
    
asked by anonymous 30.11.2016 / 03:54

1 answer

0

Solution

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

I've added the line

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

Result:

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