Property Value Access

0

I have a method where I need to get the number of each table, but, the return is always the length of the property and not its value. If I leave only one table the method correctly returns the value of the property, however if I add more tables in the object, the return will be the length of tables that exist.

let app = new Vue({

    el: '#app',
    data: {
        tituloApp: 'Acompanhamento de mesas',
        escolhaMesa: 'Escolher a mesa',
        mesas = {

            idMesa: {
                consumo: [
                    {
                        nome: 'suco maracujá',
                        quantidade: 1,
                        valor: 5.50
                    },
                    {
                        nome: 'guaraná coca-cola',
                        quantidade: 1,
                        valor: 3.00
                    },
                    {
                        nome: 'feijoada',
                        quantidade: 2,
                        valor: 12.00
                    }
                ],
                numMesa: 1
            },

            idMesa: {
                consumo: [
                    {
                        nome: 'água',
                        quantidade: 2,
                        valor: 2.50
                    },
                    {
                        nome: 'guaraná fanta-uva',
                        quantidade: 2,
                        valor: 3.00
                    },
                    {
                        nome: 'porção de frios',
                        quantidade: 2,
                        valor: 23.50
                    }
               ],
               numMesa: 2
            }
        },

        methods: { 
            MostraMesa: function(mesa) {
                let idMesa = this.mesas.idMesa.numMesa;   // retorna o length
            }
        }
})

HTML:

<div id="mostra-mesa">
    <div>
        <p>{{ produtos }}</p>
        <ul>
            <li v-for="nomes in mesas">{{ nomes.consumo.nome}}</li>
        </ul>
    </div>
    <div>
        <p>{{ quantidade }}</p>
        <ul>
            <li v-for="consumos in mesas">{{ consumos.consumo.quantidade }}</li>
        </ul>
    </div>
    <div>
        <p>{{ vlrUnit }}</p>
        <ul>
            <li v-for="valores in mesas">{{ valores.consumo.valor }}</li>
        </ul>
    </div>
    <div>
        <p>{{ vlrTotal }}
            <input type="number" readonly v-model="vlrConta" @click="MostraMesa">
        </p>
    </div>
</div>
    
asked by anonymous 30.07.2018 / 23:08

1 answer

1

tables should be an array, can not use idMesa repeatedly keys should be unique on each object

Wrong form

mesas={
       idMesa:{}, //está repetir a chave
       idMesa:{}
       }

Correct form

mesas=[
       {idMesa: 1}, 
       {idMesa: 2}
       [

I suggest you create a tableAtual property to know which table index is currently selected

In methods you must create functions that return values (not the case in your example)

let app = new Vue({

      el: '#app',
      data: {
        tituloApp: 'Acompanhamento de mesas',
        escolhaMesa: 'Escolher a mesa',
        mesas = [{
            consumos: [{
                nome: 'suco maracujá',
                quantidade: 1,
                valor: 5.50
              },
              {
                nome: 'guaraná coca-cola',
                quantidade: 1,
                valor: 3.00
              },
              {
                nome: 'feijoada',
                quantidade: 2,
                valor: 12.00
              }
            ],
            numMesa: 1
          },
          {
            consumos: [{
                nome: 'água',
                quantidade: 2,
                valor: 2.50
              },
              {
                nome: 'guaraná fanta-uva',
                quantidade: 2,
                valor: 3.00
              },
              {
                nome: 'porção de frios',
                quantidade: 2,
                valor: 23.50
              }
            ],
            numMesa: 2
          }
        ],

        methods: {

          obterIdMesa(mesa) {

            return this.mesas[mesa].numMesa;
          }

        }

      })

Example: v-for

<ul>
   <li v-for="mesa in mesas"> 

        Mesa: {{ mesa.numMesa }}

        <ul>
           <li v-for="consumo in mesa.consumos"> 

            Consumo: {{ consumo.nome }}, Qt:{{ consumo. quantidade}}

           </li>
       </ul>
   </li>
</ul>
    
30.07.2018 / 23:26