IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    解决使用vue-seamless-scroll时点击无法正确获取改行数据

    JayHrn发表于 2023-12-19 09:35:28
    love 0

    在使用vue-seamless-scroll这个组件的时候,我们有时候需要执行点击操作,但是发现有时候轮播的时候不能正确的拿到数据(点击没有任何反应),正常来说是可以获取到改行的数据。通过查阅资料发现因为vue-seamless-scroll中间包裹的dom复制渲染,没有带上dom的事件导致。于是,我们可以采用事件委托的方式进行处理。

    绑定事件

    我们可以在使用包裹着vue-seamless-scroll的组件的元素添加上click点击事件,例如下面

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <div class="list-contain" @click="handleClick($event)">
    <vue-seamless-scroll :data="componentData" class="seamless-warp" :class-option="scrollOption">
    <div class="item" v-for="(item,index) in componentData" :key="index">
    <div class="table-row">
    <div class="row-line">
    <div class="tr-col1 tr" :data-title="item.planeNumber">{{ item.planeNumber }}</div>
    <div class="tr-col2 tr">{{ item.name }}</div>
    <div class="tr-col3 tr">{{ item.partTotal }}</div>
    <div class="tr-col4 tr">{{ item.troubleTotal }}</div>
    <div class="tr-col5 tr">
    <button class="part-button" :data-obj="JSON.stringify(item)">
    切换零件
    </button>
    </div>
    </div>
    </div>
    </div>
    </vue-seamless-scroll>
    </div>

    在最外面的div上添加@click="handleClick($event)"

    绑定事件对象

    既然我们要获取到对象,我们就需要处理对象,将对象所有的数据获取,这里我们通过一个按钮来绑定获取的对象。

    1
    2
    3
    <button class="part-button" :data-obj="JSON.stringify(item)">
    切换零件
    </button>

    这里的data-xxx,其中的xxx可以自己随便命名。

    方法实现

    我们在处理点击事件时,可以通过上面绑定的对象来获取数据

    1
    2
    3
    4
    5
    6
    7
    8
    handleClick(e) {
    // 可以用事件委托的方式处理解决vue-seamless-scroll插件点击事件无效
    // 使仅点击按钮触发点击事件,dataset后面的.xxx与上面的 :data-xxx需要一致
    if (e.target.dataset.obj != null) {
    const obj = JSON.parse(e.target.dataset.obj)
    console.log(obj)
    }
    }

    这里的dataset后面的obj就是我们上面定义的xxx,通过这个我们就可以实现获取数据了。



沪ICP备19023445号-2号
友情链接