el-tag的高亮回显效果,在数据回显的时候

template:


<template>
    <div>
        <el-tag v-model="tag" style="cursor:pointer" v-for="(item, index) in items" size="small" @click="changeColor(index)"
            :key="index" :effect="item.tagEffect">
            {{ item.label }}
        </el-tag>
    </div>
</template>

script :

<script>
import {getDetail,getTag} from "@/api";
export default {
    data() {
        return {
            items: [],
            tagList: [],
        }
    },
    methods: {
        // 动态获取详情
        async getDetail(id) {
            await this.getTag();//因为我们需要
            let param = {
                id: id,
            }
            getDetail(param).then((res) => {
                this.tagList = res.resultdata.tag
                const tagLabel = data.resultdata.tag;
                if (tagLabel) {
                    // 不爲空的的時候
                    let labelList = tagLabel.split(',')
                    this.tagList = labelList;
                    this.items.forEach(e => {
                        if (labelList.includes(e.label)) {
                            this.$set(e, 'tagEffect', 'dark')
                        }
                    })
                }
                this.dialogVisible = true;
                this.$forceUpdate();
            })
        },
        //items是动态获取的
        getTag() {
            return new Promise((resolve, reject) => {//添加异步是因为在详情的时候数据都获取到了,你去遍历的时候,那个 items 是空的,所以需要添加异步
                const params = {
                    // 传必传参数
                };
                getTag(params).then((res) => {
                    if (res.result) {
                        const items = [];
                        res.resultdata.forEach(function (obj, index) {
                            items.push({
                                label: obj.labelName,
                                index: index,
                                tagEffect: `plain`,//一开始是没有高亮的
                            });
                        });

                        this.items = items;
                    }
                    resolve()
                }).catch(() => {
                    reject
                });
            })
        },
        changeColor(id) {
            // 点击改变tag的颜色
            this.items[id].tagEffect =
                this.items[id].tagEffect == `plain` ? `dark` : `plain`;
            this.tagList = [];
            for (let i = 0; i < this.items.length; i++) {
                if (this.items[i].tagEffect == `dark`) {//黑色
                    this.tagList.push(this.items[i].label);
                }
            }
        },
    }
}
</script>

完成上述操作就能实现el-tag的详情数据回显效果了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值