原文地址:https://www.cnblogs.com/wisewrong/p/10191621.html

github地址:https://github.com/wisewrong/vue-tag-textarea

最终成品效果图:

使用:

npm install vue-tag-textarea -S

在 main.js 文件中引入插件并注册

# main.js
import VueTagTextarea from 'vue-tag-textarea'
import 'vue-tag-textarea/lib/vue-tag-textarea.css'
Vue.use(VueTagTextarea)

 在项目中用使用 VueTagTextarea(使用建议使用github这个使用方法,原文的使用点击添加标签是没有加事件的)

<template>
  <div id="app">
    <div>
      <h1>测试 textarea 组件</h1>
      <div class="container" ref="wise">
        <button @click="add">add</button>
        <div v-for="(item, index) in listData" :key="index">
          <button @click="handleDelete(index)">delete</button>
          <w-textarea v-model="item.text" :tools="[]"></w-textarea>
        </div>
        <w-textarea v-model="testData" tag="wise" ref="testText" maxlength="100" @add="handleAdd">
          <div v-if="show">
            <div>
              <label>模版内容</label>
              <input type="text" v-model="form.text">
            </div>
            <div>
              <button @click="addTag(form.text)">save</button>
            </div>
          </div>
        </w-textarea>
        <div v-html="testData"></div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'app',
  components: {},
  data () {
    return {
      testData: '',
      listData: [],
      show: false,
      form: {
        text: ''
      }
    }
  },
  methods: {
    add () {
      this.listData.push({ text: '' })
    },
    handleDelete (index) {
      this.listData.splice(index, 1)
      console.log('list', this.listData)
    },
    handleAdd (type) {
      if (type === 'tag') {
        this.show = true
      } else {
        console.log(type)
      }
    },
    addTag (text) {
      this.$refs.testText.addTag(text)
      console.log('testdata', this.testData)
      this.show = false
    }
  }
}
</script>

<style lang="scss"></style>

效果图: 

Logo

前往低代码交流专区

更多推荐