Добавление строк в элемент во Vue Js

Я пытаюсь отображать строки, используя элемент ввода-вывода в VueJs. Моя проблема в том, почему мой код не выводится и как я могу добавить несколько строк и удалить некоторые из них? Что-то не так с моим кодом? Я прикрепил v-for, но, похоже, он не работает. Извините, я новичок в element-ui. Пожалуйста, посмотрите мой код ниже. Спасибо.

<template>
    <div>

        <el-form>
            <el-table v-for='(item, index) in items' :key='index'>

                    <el-table-column
                            sortable="true"
                            label="Item">
              <template>
                 <el-input v-model="item.item_id"></el-input>
              </template>
                    </el-table-column>

                    <el-table-column
                            sortable="true"
                            label="Quantity">
                            <template>
                 <el-input v-model="item.quantity"></el-input>
              </template>
                    </el-table-column>

                    <el-table-column
                            sortable="true"
                            label="Unit">
                            <template>
                 <el-input v-model="item.quantity"></el-input>
              </template>
                    </el-table-column>

                    <el-table-column
                            sortable="true"
                            label="Unit Price">
                            <template>
                 <el-input v-model="item.unit_price"></el-input>
              </template>
                    </el-table-column>

                    <el-table-column
                            fixed="right"
                            property="action"
                            label="Action">
                            <template>
                                    <el-button type="danger" size="small">Remove</el-button>
                            </template>
                    </el-table-column>

            </el-table>
            <br>
            <el-form-item style="float:right;">
                <el-button type="submit" @click.prevent="createNewPurchaseOrder">Create</el-button>
                <el-button>Cancel</el-button>
            </el-form-item>
        </el-form>
    </div>
</template>

<script>
export default {
  data () {
    return {
      items: [
        {
          item_id: '1',
          quantity: '8',
          unit_id: 'Gram',
          unit_price: '100'
        }
      ]
    }
  },
  methods: {
    createNewPurchaseOrder () {
      console.log(this.$data)
    }
  }
}
</script>

person Gray Singh    schedule 21.09.2018    source источник


Ответы (2)


Вам не нужно повторять себя. Компонент el-table из Element-Ui принимает массив в качестве свойств данных для работы. См. Table Props для компонента el-table в ElementUI

Это должно работать:

<el-table :data="items">
  ...
</el-table>

Каждый el-table-column должен быть ключом вашего элемента в вашем списке элементов, добавляя prop='myKey' к каждому el-table-column

Например, если у меня есть массив таких элементов:

[{
  id : 12,
  firstname : "John",
  lastname : "Doe"
}]

У меня будет такая таблица

<el-table :data="items">
  <el-table-column prop="id" label="ID">...</el-table-column>
  <el-table-column prop="firstname" label="Firstname">...</el-table-column>
  <el-table-column prop="lastname " label="Lastname">...</el-table-column>
</el-table>

Когда вы удаляете или добавляете элемент в свой массив, свойства: data el-table будут реагировать на изменения.

person Ekushisu    schedule 21.09.2018

Подробнее см. документацию по таблице элементов

Вы должны передать свойство data в el-table и свойство prop в el-table-column

<template>
<div>

    <el-form>
        <el-table :data="items" :key='index'>

          [...]
        </el-table>
        <br>
        <el-form-item style="float:right;">
            <el-button type="submit" @click.prevent="createNewPurchaseOrder">Create</el-button>
            <el-button>Cancel</el-button>
        </el-form-item>
    </el-form>
</div>

person kalidou.diagne    schedule 21.09.2018