【问题标题】:Enabling dynamic input in Vue.js vue-kanban plugin在 Vue.js vue-kanban 插件中启用动态输入
【发布时间】:2019-05-26 03:32:41
【问题描述】:

我正在尝试启用对 Vue.js vue-kanban 插件 (https://github.com/BrockReece/vue-kanban) 的动态输入。到目前为止,我已经成功创建了一个方法,将用户输入推送到动态创建的块中,状态设置为“on-hold”,以便创建的块在初始“on-hold”阶段默认呈现,然后启用用于拖放到每个阶段。问题是除了标题之外,我不得不手动输入每个块的 ID。我希望每个块都有一个唯一的 id 而不必手动输入一个。此外,控制台返回一个错误,表明“title”的属性或方法未在实例上定义,但在渲染期间被引用。解决这两个问题的最佳方法是什么?这是我的代码。谢谢!

//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>

【问题讨论】:

    标签: javascript vue.js kanban


    【解决方案1】:

    我希望每个块都有一个唯一的 id 而不必 手动输入一个。

    也许这会解决问题。

    <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>
    

    【讨论】:

    • 感谢您的回答。这是超级接近。我修复了您的组件,以便在实例上定义标题和 ID。因此,使用您的答案,我将 title 和 id 添加为数据属性。总的来说,感谢您开启了我寻找正确答案的旅程!
    猜你喜欢
    • 2018-08-25
    • 2019-10-09
    • 2017-05-15
    • 2023-03-10
    • 2012-05-23
    • 1970-01-01
    • 2020-06-04
    • 2020-03-08
    • 2018-11-21
    相关资源
    最近更新 更多