第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

使用Vue實(shí)現(xiàn)標(biāo)簽多選功能(一)

標(biāo)簽:
WebApp Vue.js 源碼

前言

由于技术水平菜,在工作开发中经常遇到伤脑筋的业务需求。比如在选取多个标签时,除了要得到标签的ID,还需要改变该标签的样式;并且再次点击相同的标签时,移除该标签的id以及样式;同时还要控制选取标签的数量。具体的开发页面如下图(标签布局请自动忽略掉…)

开发步骤

我们先看一下HTML结构代码

<div class="tips-list">
  <span
    v-for="(item,index) of tags"
    :key="index"
    @click="selectTag(index,item.tagId)"
    :class="{seActive: arr[index]}"
    >{{item.tagName}}</span>
</div>
<h1 class="click-count">
  <span>已选择:</span>
  <span class="sub-title" :class="{spanActive:tagIds.length>0}">{{tagIds.length}}/3标签</span>
</h1>

再来看看与之相关的data代码

data() {
  return {
    tags: [],
    arr: [],
    tagIds: [],
    lock: true, // 锁
  }
}

最后再来看看核心的业务代码,首先是获取所有的标签数据,同时将arr数组中的数据全部填充为false

getTags() {
  let datas = {};
  // Answer为高度封装好的自定义HTTP请求对象
  Answer.getTags(datas).then(res => {
    this.tags = res.data;
    for (let i = 0; i < this.tags.length; i++) {
      this.arr.push(false);
    }
  });
}

接下来是点击标签事件

selectTag(index, tagId) {
  this.lock = true;
  for (let i = 0; i < this.tagIds.length; i++) {
    if (this.tagIds[i] == tagId) {
      this.tagIds.splice(i, 1);
      this.lock = false;
    }
  }
  for (let i = 0; i < this.arr.length; i++) {
    if (this.tagIds.length >= 3) {
      this.$toast({
        message: "最多只能选择3个标签!",
        position: "middle",
        duration: 1000
      });
      return false;
    }
    if (i == index) {
      this.arr[index] ? this.arr.splice(index, 1, false) : this.arr.splice(index, 1, true);
    }
  }
  if (this.tagIds.length < 3 && this.lock) {
    this.tagIds.push(tagId);
  }
}

里面的逻辑很绕,核心在于lock这个属性,它保证了两次点击同一个标签能达到取消、样式改变、不再重新添加数据的功能。

其实代码都是非常基础的,主要就是思路的问题。觉得逻辑很绕的,多看几遍,多测几次就行,或者用一种更好的方式来实现一样可以。

點(diǎn)擊查看更多內(nèi)容
4人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消