学习应用一下不常用的element-plus抛出的指令

学习应用一下element-plus抛出的指令

click-outside

效果图

作用

这个指令的主要目的是监听页面上的点击事件,并判断点击是否发生在指定元素之外。如果是,那么执行一些操作,如关闭弹出窗口

使用
js 复制代码
<template>
  <div
    v-click-outside="() => toggele('', false)"
    v-if="show"
    :class="['absolute']"
    :key="path.x + path.y"
    :style="{ left: path.x + 'px', top: path.y + 'px' }"
  >
    <el-card class="relative z-10">
      <template #header>
        <div class="card-header">
          <span>操作菜单栏</span>
        </div>
      </template>
      <div class="text item" @click="closeAll">关闭所有</div>
      <div class="text item" @click="closeOther">关闭其他</div>
    </el-card>
  </div>
</template>

<script setup lang="ts">
import { useGlobalStore } from "@/store/index"
import { ClickOutside as vClickOutside } from "element-plus"

const store = useGlobalStore()
const show = ref(false)
const index = ref("")
defineProps({
  path: {
    type: Object,
    default: () => {
      return {
        x: 0,
        y: 0
      }
    }
  }
})
const closeAll = () => {
  console.log("关闭所有")
  store.clearTab()
  toggele("", false)
}
const closeOther = () => {
  console.log("关闭其他")
  store.closeOtherTab(index.value)
  toggele("", false)
}

const toggele = (key: string, visible = true) => {
  if (key) {
    index.value = key
  }
  show.value = visible
  console.log(show.value)
}

defineExpose({
  toggele
})
</script>

<style>
.mouseWheel {
  height: 500px;
  overflow-y: scroll;
}
</style>

mousewheel

效果图
作用

允许直接在模板中绑定滚轮事件的处理函数,而无需手动添加事件监听器,从而简化了鼠标滚轮事件处理的复杂度。

使用
js 复制代码
<template>
  <div v-mousewheel="handleScroll" class="my-container">
    <!-- 这里可以是任何你希望在滚轮滚动时互动的内容,比如一个列表或图片等 -->
    <div class="h-[200px]" v-for="(item, index) in 10" :key="index">{{ item }}</div>
  </div>
</template>

<script setup lang="ts">
import { Mousewheel as vMousewheel } from "element-plus"

const handleScroll = (event: WheelEvent) => {
  console.log("滚动了", event)
}
</script>
<style>
.my-container {
  height: 600px;
  overflow-y: scroll;
}
</style>

repeat-click

效果图
作用

这个指令可以帮助开发者在用户进行连续快速点击操作时触发特定的函数或动作,比如长按加减等

使用
js 复制代码
<template>
  <el-button v-repeat-click="{ handler: handleRepeatClick, interval: 1000, delay: 500 }">连续点击我</el-button>
</template>

<script setup>
import { vRepeatClick } from "element-plus"

let count = 0

function handleRepeatClick() {
  count++
  console.log("按钮被点击了", count)
}
</script>
相关推荐
NBtab16 分钟前
Vite + Vue3项目版本更新检查与页面自动刷新方案
前端
天天扭码27 分钟前
来全面地review一下Flex布局(面试可用)
前端·css·面试
用户458203153171 小时前
CSS特异性:如何精准控制样式而不失控?
前端·css
用户51681661458411 小时前
Vue Router 路由懒加载引发的生产页面白屏问题
vue.js·vue-router
libraG1 小时前
Jenkins打包问题
前端·npm·jenkins
前端康师傅1 小时前
JavaScript 作用域
前端·javascript
前端缘梦1 小时前
Vue Keep-Alive 组件详解:优化性能与保留组件状态的终极指南
前端·vue.js·面试
我是天龙_绍1 小时前
使用 TypeScript (TS) 结合 JSDoc
前端
云枫晖1 小时前
JS核心知识-事件循环
前端·javascript
Simon_He1 小时前
这次来点狠的:用 Vue 3 把 AI 的“碎片 Markdown”渲染得又快又稳(Monaco 实时更新 + Mermaid 渐进绘图)
前端·vue.js·markdown