三级联动展示和获取数据跳转路由

先给三级联动最大的父元素 添加点击事件 通过事件委派 给所有子组件添加

给a标签添加自定义属性 通过用element接受 e.target 再 element.dataset 判断有没有自定义属性从而得知是不是a标签

<div class="sort" @click="goSearch">
                    <div class="all-sort-list2">
                        <div class="item" v-for="(item, index) in categoryList" :key="item.categoryId">
                            <h3 @mouseenter="changeIndex(index)" :class="{ cur: index == curChange }">
                                <!-- 给每个A标签绑定一个自定义属性 用来判断是不是a标签 -->
                                <a :data-categoryName="item.categoryName" :data-category1id="item.categoryId">{{
                                        item.categoryName
                                }}</a>
                            </h3>
                            <div class="item-list clearfix" :class="{ itemList: curChange == index }">
                                <div class="subitem" v-for="(sub, index) in item.categoryChild " :key="sub.categoryId">
                                    <dl class="fore">
                                        <dt>
                                            <a :data-categoryName="sub.categoryName"
                                                :data-category2id="sub.categoryId">{{ sub.categoryName }}</a>
                                        </dt>
                                        <dd>
                                            <em v-for="(list, index) in sub.categoryChild" :key="list.categoryId">
                                                <a :data-categoryName="list.categoryName"
                                                    :data-category3id="list.categoryId">{{ list.categoryName }}</a>
                                            </em>
                                        </dd>
                                    </dl>
                                </div>
                            </div>
                        </div>

 逻辑片段

用element接受e.target 然后通过element.dataset判断点击的标签有没有这个自定义属性 有得话就是a标签

从element.datase解析出来categoryname, category1id, category2id, category3id

let goSearch = (e) => {
    //通过e.target拿到事件元素得到所有子节点
    let element = e.target
    //element.dataset通过dataset拿到里面的所有自定义属性 有categoryname的就是a标签
    let { categoryname, category1id, category2id, category3id } = element.dataset
    if (categoryname) {
        //整理参数通过query传参
        let location = { categoryName: categoryname }
        if (category1id) {
            location.category1id = category1id
        } else if (category2id) {
            location.category2id = category2id
        } else {
            location.category3id = category3id
        }
        router.push({
            name: 'search',
            query: location
        })
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值