Включение динамического ввода в плагине vue.js vue-kanban - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь включить динамический ввод для плагина Vue.js vue-kanban (https://github.com/BrockReece/vue-kanban).). До сих пор я успешно создал метод, который помещает пользовательский ввод в динамически создаваемый блок с установленным статусом. «на удержании», чтобы созданный блок по умолчанию отображался на начальном этапе «на удержании», а затем включался для перетаскивания на каждом этапе. Проблема в том, что я застрял при необходимости вручную вводить идентификатор каждого блока В дополнение к заголовку. Мне бы хотелось, чтобы каждый блок имел уникальный идентификатор без необходимости его ввода вручную. Также консоль возвращает ошибку, указывающую, что свойство или метод «заголовка» не определен в экземпляре, но на него ссылаются во время рендеринга. лучший способ решить обе проблемы? Вот мой код. Спасибо!

//App.vue

<template>
  <div id="app">
    <div class="input-container">
      <input type="number" placeholder="id" v-model="id"/>
      <input type="text" placeholder="title" v-model="title"/>
      <button type="button" v-on:click="addBlock()">Add</button>
    </div>
    <kanban-board :stages="stages" :blocks="blocks">
      <div v-for="stage in stages" :slot="stage" :key="stage">
        <h2>{{ stage }}</h2>
      </div>
      <div v-for="block in blocks" :slot="block.id" :key="block.id">
        <div>
          <strong>id:</strong> {{ block.id }}
        </div>
        <div>
          {{ block.title }}
        </div>
      </div>
    </kanban-board>
  </div>
</template>

<script>
export default {
  name: 'app',
  id: null,
  title: null,
  data () {
    return {
      stages: ['on-hold', 'in-progress', 'needs-review', 'approved'],
      blocks: [],
    }
  },
  methods: {
    addBlock(){
      this.blocks.push({
        id: this.id,
        status: "on-hold",
        title: this.title
      });
      this.status = "";
      this.title = "";
    }
  }
}
</script>

<style lang="scss">
  @import './assets/kanban.scss';

  .input-container {
    width: 50%;
    margin: 0 auto;
  }
</style>

1 Ответ

0 голосов
/ 12 июня 2019

Я бы хотел, чтобы у каждого блока был уникальный идентификатор без необходимости введите вручную.

Может быть, это решит проблему.

<template>
  <div id="app">
    <div class="input-container">
      <input type="text" placeholder="title" v-model="title"/>
      <button type="button" v-on:click="addBlock()">Add</button>
    </div>
    <kanban-board :stages="stages" :blocks="blocks">
      <div v-for="stage in stages" :slot="stage" :key="stage">
        <h2>{{ stage }}</h2>
      </div>
      <div v-for="block in blocks" :slot="block.id" :key="block.id">
        <div>
          <strong>id:</strong> {{ block.id }}
        </div>
        <div>
          {{ block.title }}
        </div>
      </div>
    </kanban-board>
  </div>
</template>

<script>
export default {
  name: 'app',
  id: 0,
  title: null,
  data () {
    return {
      stages: ['on-hold', 'in-progress', 'needs-review', 'approved'],
      blocks: [],
    }
  },
  methods: {
    addBlock(){
      this.blocks.push({
        id: this.id,
        status: "on-hold",
        title: this.title
      });
      this.id += 1;
      this.status = "";
      this.title = "";
    }
  }
}
</script>
...