iview实现动态编辑标签!

绝地灬酷狼 2024-04-18 16:30 164阅读 0赞

文章开始前,说几句废话。

其实这个很简单,在iview的文档中呢,提供了标签的动态使用 ——>点这里看iview标签,但它是不可编辑的,所以我写个文章记录一下,方便刚学习vue的小伙伴,直接使用,毕竟我开始也是不会到会。

首先,我给大家看一下我最初做的样子,我是写死的,然后进行点选。。。

format_png

这个效果不是我想要的,最代码现在也是分享博客的时候,默认选择一些类别。当然具体情况具体分析。我想要的效果什么呢,比如csdn发表文章添加标签一样。虽然当时想是这么想的,但没有去深究,今天好好研究了一下,把这个写出来了。

接下来,我就给大家上代码,讲一下怎么实现。

  1. <iv-tag
  2. v-for="item in countTags"
  3. :key="item"
  4. :name="item"
  5. closable
  6. @on-close="handleClose">{
  7. { item }}</iv-tag >
  8. //tag参数
  9. countTags: ['Java', 'Vue'],
  10. //标签部分
  11. handleClose(tag) {
  12. this.countTags.splice(this.countTags.indexOf(tag), 1);
  13. },

注:iview中你使用tag,不是iv-tag,,我这个是自定义引入,只使用我需要的iview插件。

如上代码段,遍历标签,不多解释,加了一个可关闭事件。参照iview中的官方文档,跟我这个大同小异。

接下来就是iview中没有的。

在iv-tag下写一个input。代码如下~

  1. <iv-input
  2. class="input-new-tag"
  3. v-if="inputVisible"
  4. v-model="inputValue"
  5. ref="saveTagInput"
  6. size="small"
  7. @keyup.enter.native="handleInputConfirm"
  8. @blur="handleInputConfirm"
  9. >
  10. 样式,写到你的style里
  11. .input-new-tag {
  12. width: 80px;
  13. margin-left: 0px;
  14. }

再加俩个初始参数,

  1. inputVisible: false,
  2. inputValue: '',

一个回车事件,一个元素失去焦点时所触发的事件,触发同一个事件。

  1. handleInputConfirm() {
  2. let inputValue = this.inputValue;
  3. if (inputValue) {
  4. this.countTags.push(inputValue); //简简单单,push一下
  5. }
  6. this.inputVisible = false;
  7. this.inputValue = '';
  8. },

再在input下加一个button,使用ref引用上面的input,点击出现。

  1. <iv-button v-else
  2. size="small"
  3. type="dashed"
  4. icon="ios-add"
  5. @click="showInput">+ 添加标签</iv-button>
  6. showInput() {
  7. this.inputVisible = true;
  8. this.$nextTick(_ => {
  9. this.$refs.saveTagInput.$refs.input.focus();
  10. });
  11. },

至此,全文结束。

format_png 1

看一下效果~

aHR0cDovL3N0YXRpYy56dWlkYWltYS5jb20vaW1hZ2VzLzI0MDMwOC8yMDE5MDkvMjAxOTA5MDkxNTU4MDMxMzguZ2lm

发表评论

表情:
评论列表 (有 0 条评论,164人围观)

还没有评论,来说两句吧...

相关阅读