element-plus 提供的 el-dialog 对话框功能非常强大,只是美中不足不能通过拖拽的方式改变位置,有点小遗憾,那么怎么办呢?我们可以通过 vue 的自定义指令来实现一个可以拖拽的对话框(el-dialog). 拖拽演示 https://www.zhihu.com/zvideo/1380450791975731200 vue3 的自定义指令 directive 为啥选择自定义指令的方式来实现呢?一个是可以方便的获得 dom 便于操作,另一个是方便使用和封装. 自定义指令有两种注册方…
在大多数情况下,你都可以操作数据来修改视图,或者反之.但是还是避免不了偶尔要操作原生 DOM,这时候,你就能用到自定义指令. 举个例子,你想让页面的文本框自动聚焦,在没有学习自定义指令的时候,我们可能会这么做. const app = Vue.createApp({ mounted(){ this.$refs.input.focus(); }, template: `<input type="text" ref="input" />`, }); 在mou…
1. 概述 老话说的好:能屈能伸的人生,才是完满而丰富的人生. 言归正传,今天我们来聊聊 VUE 中自定义指令的实现. 2. 自定义指令 2.1 文本框聚焦的实现  <body> <div id="myDiv"></div> </body> <script> const app = Vue.createApp({ mounted() { // 文本框聚焦 this.$refs.myInput.focus(); }, templ…
经过1个周的摸索和查阅资料,终于搞定VUE3中自定义指令,实现按钮级别的权限控制.当然,只是简单的对按钮进行隐藏和删除的dom操作比较容易,一直纠结的是当按钮无权限时,不是直接删除当前dom元素(button按钮),这样用户体验不好,让人感觉没有这个功能.为了提高用户体验,当该按钮无权使用时,使用el-tooltip功能进行提醒.以下是个人的做法,是否有弊端和不足,或者各位高手有更优的方案,欢迎指导和赐教! 1.总体效果如下: 2.permissionlist组件中的按钮设置为:增加.修改和删除…
有关自定义指令的scope参数,网上很多文章都在讲这3种绑定方式实现的效果是什么,但几乎没有人讲到底怎么使用,本篇希望聊聊到底怎么用这个话题. 一. 自定义指令 自定义指令,是Angularjs用来实现组件化的方式,相比于React和Vue的组件化方式,它真的很复杂,自定义指令太重了,它暴露了太多可供定制的参数,以至于普通的开发者完全不知道要用它来做什么而将其束之高阁,毕竟一般的业务逻辑通过controller和service就已经可以完成了. 自定义指令在Angularjs项目中主要有两大用途…
my-directive为指令名称,thisdata为绑定的数据 <span ng-repeat="act in move.casts" style="position:relative"> <my-directive thisdata="act"> </my-directive> <img src="" alt="" class="pic" &…
基于Vue3.0构建PC桌面端自定义美化滚动条组件V3Scroll. 前段时间有分享一个Vue3 PC网页端弹窗组件,今天带来最新开发的Vue3.0版虚拟滚动条组件. V3Scroll 使用vue3.x开发的轻量级自定义美化滚动条组件.功能效果基本和之前的vue2版保持一致.支持是否自动隐藏滚动条.自定义滚动条尺寸.颜色及层级等功能. 功能效果类似饿了么el-scrollbar组件.并且支持监听DOM尺寸改变,动态更新滚动条. ◆ 快速引入 在main.js中全局引入滚动条v3scroll组件.…
标签(空格分隔): Vue 自定义指令用于过滤输入框,只允许输入数字: Vue.directive('numberOnly', { bind: function (el, binding) { el.handler = function () { el.value = el.value.replace(/[^\d]/g, ''); } el.addEventListener('input', el.handler); }, unbind: function (el) { el.removeEve…
import Vue from 'vue' Vue.directive('longpress', function (el, binding){ var timer = null; var start = function (e) { // 如果是点击事件,不启动计时器,直接返回 if (e.type === 'click'){ return } if (timer == null){ // 创建定时器 ( 2s之后执行长按功能函数 ) timer = setTimeout(function (…
clickoutside.js // 代码内容 const clickoutsideContext = '@@clickoutsideContext'; export default { bind(el, binding, vnode) { const documentHandler = (e) => { if (vnode.context && !el.contains(e.target)) { vnode.context[el[clickoutsideContext].metho…