Vue VueMultiselect Tagging

by kabanoki

HTML

<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/vue-multiselect.min.css">
<script src="https://unpkg.com/[email protected]/dist/vue-multiselect.min.js"></script>
<div id="app">
  <multiselect
    v-model="taggingSelected"
    :options="taggingOptions"
    :multiple="true"
    :taggable="true"
    label="name"
    track-by="code"
    @tag="addTag"
    tag-placeholder="Add this as new tag"
    placeholder="tag付け">
  </multiselect> 
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js"></script>

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#app {
  background: #fff;
  border-radius: 4px;
  padding: 40px;
  transition: all 0.2s;
}

Vue

Vue.component('Multiselect', window.VueMultiselect.default);

new Vue({
  el: "#app",
  data: {
    taggingOptions: [],
    taggingSelected: [],
  },
  methods: {
    addTag: function(newTag) {
      const tag = {
        name: newTag,
        code: newTag.substring(0, 2) + Math.floor((Math.random() * 10000000))
      }
      this.taggingOptions.push(tag)
      this.taggingSelected.push(tag)
    },
  }
})