Перенесите информацию о строке с данными в модальный формат, если введенная строка больше 0

#vue.js #vuejs2 #vuetify.js

#vue.js #vuejs2 #vuetify.js

Вопрос:

В настоящее время я пытаюсь ввести информацию о строке с данными в диалоговое окно для строк с количеством входных значений больше 0. Я знаю, что с помощью флажков, если они установлены / true, он извлекает всю ту же информацию о строке в выбранный массив для удобства использования. Я пытаюсь получить ту же функциональность для ввода, превышающего 0.

Установлены флажки информация о строке для входа в диалоговое окно с использованием выбранного массива. Похоже, не могу понять, как сделать то же самое (получить данные этих строк) с входными данными больше 0

https://codepen.io/anon/pen/xeVZKv?editors=1010

HTML

 <div id="app">
  <v-app id="inspire">
    <v-data-table
      :headers="headers"
      :items="desserts"
      class="elevation-1"
      v-model="selected"
      item-key="name"
      >
      <template v-slot:items="props">
        <td>{{ props.item.name }}</td>
        <td class="text-xs-right">{{ props.item.calories }}</td>
        <td class="text-xs-right">{{ props.item.fat }}</td>
        <td class="text-xs-right">{{ props.item.carbs }}</td>
        <td class="text-xs-right">{{ props.item.protein }}</td>
        <td v-if="props.item.qty < 2" style="width: 10%">
          <v-checkbox v-model="props.selected" primary hide-details></v-checkbox>
        </td>
        <td v-else style="display:inline-flex;">
          <v-text-field
            value="0"
            onclick="this.select()"
            type= "number"
            :max="props.item.Qty"
            :totalCount="props.item.Qty"
            min="0"
            :id="'inputCount'   props.index"
            style="width:40px; margin-left: 5px;"
            @change="counter()"
            ></v-text-field>
          <div style="padding-top: 15px; margin-left: 10px;">of {{ props.item.qty }}</div>
        </td>
      </template>
      <template v-slot:pageText="props">
        Lignes {{ props.pageStart }} - {{ props.pageStop }} de {{ props.itemsLength }}
      </template>
    </v-data-table>
    <v-layout row wrap class="">
      <v-flex xs4 class="text-xs-left">
      </v-flex>
      <v-flex xs4 class="text-xs-center">       
      </v-flex>
      <v-flex xs4 class="text-xs-right">
        <v-btn v-if="buyCounter < 1" color="primary" class="receiveButton" :disabled="buttonActivate" @click="buyModel()">Receive</v-btn>
        <v-btn v-else-if="buyCounter > 0 amp;amp; buyCounter < 2" color="primary" class="receiveButton" :disabled="buttonActivate" @click="buyModel()">Receive {{ buyCounter }} Part</v-btn>
        <v-btn v-else-if="buyCounter > 1" color="primary" class="receiveButton" :disabled="buttonActivate" @click="buyModel()">Receive {{ buyCounter }} Parts</v-btn>
        <v-btn v-else color="primary" class="receiveButton" :disabled="buttonActivate">Receive</v-btn>
      </v-flex>
    </v-layout>
  </v-app>
</div>
  

JS

 new Vue({
  el: '#app',
  data () {
    return {
      inputCount: 0,
      selected: [],
      headers: [
        {
          text: 'Dessert (100g serving)',
          align: 'left',
          sortable: false,
          value: 'name'
        },
        { text: 'Calories', value: 'calories' },
        { text: 'Fat (g)', value: 'fat' },
        { text: 'Carbs (g)', value: 'carbs' },
        { text: 'Protein (g)', value: 'protein' },
        { text: 'Qty Available', value: 'qty' }
      ],
      desserts: [
        {
          name: 'Frozen Yogurt',
          calories: 159,
          fat: 6.0,
          carbs: 24,
          protein: 4.0,
          qty: 1
        },
        {
          name: 'Ice cream sandwich',
          calories: 237,
          fat: 9.0,
          carbs: 37,
          protein: 4.3,
          qty: 2
        },
        {
          name: 'Eclair',
          calories: 262,
          fat: 16.0,
          carbs: 23,
          protein: 6.0,
          qty: 1
        },
        {
          name: 'Cupcake',
          calories: 305,
          fat: 3.7,
          carbs: 67,
          protein: 4.3,
          qty: 1
        },
        {
          name: 'Gingerbread',
          calories: 356,
          fat: 16.0,
          carbs: 49,
          protein: 3.9,
          qty: 3
        },
        {
          name: 'Jelly bean',
          calories: 375,
          fat: 0.0,
          carbs: 94,
          protein: 0.0,
          qty: 1
        },
        {
          name: 'Lollipop',
          calories: 392,
          fat: 0.2,
          carbs: 98,
          protein: 0,
          qty: 1
        },
        {
          name: 'Honeycomb',
          calories: 408,
          fat: 3.2,
          carbs: 87,
          protein: 6.5,
          qty: 1
        },
        {
          name: 'Donut',
          calories: 452,
          fat: 25.0,
          carbs: 51,
          protein: 4.9,
          qty: 1
        },
        {
          name: 'KitKat',
          calories: 518,
          fat: 26.0,
          carbs: 65,
          protein: 7,
          qty: 1
        }
      ]
    };
  },
    computed: {
        buttonActivate: function () {
            let count = 0;

            $('input[id^="inputCount"]').each(function (i, e) {
                let element = $(e).val();
                if (element == "") {
                    element = 0;
                }

                let eachCountInt = parseInt(element);

                count = eachCountInt   count;
            })

            this.inputCount = count;

            if (this.selected.length > 0 || this.inputCount > 0) {
                return false;
            } else {
                return true;
            }
        },
        buyCounter: function () {
            let count = this.selected.length   this.inputCount;

            return count;
        }
    },
    methods: {
        counter() {
            let count = 0;

            $('input[id^="inputCount"]').each(function (i, e) {
                let element = $(e).val();
                if (element == "") {
                    element = 0;
                }

                let eachCountInt = parseInt(element);

                count = eachCountInt   count;;
            })


            this.inputCount = count;
        },
    buyModel() {

    }
  }
  })
  

В целом, мы хотим ввести всю выбранную информацию / больше 0 в диалоговое окно для подтверждения перед обработкой. Любая помощь была бы высоко оценена.

Комментарии:

1. ваш codepen странным образом зацикливается

2. Что вы имеете в виду?