vue常用自定义指令

Vue——《2.13、Vue的常用指令与自定义指令》 本文介绍了Vue的常用指令(`v-text`、`v-html`、`v-cloak`、`v-once`、`v-pre`)及其功能,强调`v-html`需注意XSS攻击风险。同时,详细讲解了自定义指令的定义与使用,包括局部自定义指令(函数式和对象式)和全局自定义指令。通过示例代码展示了指令的实际应用场景,强调了自定义指令中`this`指向`window`的特性。 阅读详情

 参考网上例子整理了一下


import Vue from 'vue'

// v-dialogDrag: 弹窗拖拽,
// 使用案例:
/* <el-dialog :visible.sync="dialogshow" center v-dialogDrag :close-on-click-modal='false' @close='dialog_close'>
</el-dialog> */
Vue.directive('dialogDrag', {
  bind(el, binding, vnode, oldVnode) {
    const dialogHeaderEl = el.querySelector('.el-dialog__header')
    const dragDom = el.querySelector('.el-dialog')
    dialogHeaderEl.style.cursor = 'move'

    // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
    const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null)

    dialogHeaderEl.onmousedown = (e) => {
      // 鼠标按下,计算当前元素距离可视区的距离
      const disX = e.clientX - dialogHeaderEl.offsetLeft
      const disY = e.clientY - dialogHeaderEl.offsetTop

      // 获取到的值带px 正则匹配替换
      let styL, styT

      // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
      if (sty.left.includes('%')) {
        styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100)
        styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100)
      } else {
        styL = +sty.left.replace(/\px/g, '')
        styT = +sty.top.replace(/\px/g, '')
      }

      document.onmousemove = function(e) {
        // 通过事件委托,计算移动的距离
        const l = e.clientX - disX
        const t = e.clientY - disY

        // 移动当前元素
        dragDom.style.left = `${l + styL}px`
        dragDom.style.top = `${t + styT}px`

        // 将此时的位置传出去
        // binding.value({x:e.pageX,y:e.pageY})
      }

      document.onmouseup = function(e) {
        document.onmousemove = null
        document.onmouseup = null
      }
    }
  }
})

// v-dialogDragWidth: 弹窗宽度拖大 拖小
Vue.directive('dialogDragWidth', {
  bind(el, binding, vnode, oldVnode) {
    const dragDom = binding.value.$el.querySelector('.el-dialog')

    el.onmousedown = (e) => {
      // 鼠标按下,计算当前元素距离可视区的距离
      const disX = e.clientX - el.offsetLeft

      document.onmousemove = function(e) {
        e.preventDefault() // 移动时禁用默认事件

        // 通过事件委托,计算移动的距离
        const l = e.clientX - disX
        dragDom.style.width = `${l}px`
      }

      document.onmouseup = function(e) {
        document.onmousemove = null
        document.onmouseup = null
      }
    }
  }
})
// 在组件中,使用自定义的事件:v-loadmore="loadMore" 在methods中调用loadMore
Vue.directive('loadmore', {
  bind(el, binding) {
    var p = 0;
    var t = 0;
    var down = true;
    var selectWrap = el.querySelector('.el-table__body-wrapper')
    selectWrap.addEventListener('scroll', function () {
      //判断是否向下滚动
      p = this.scrollTop;
      // if ( t < p){down=true}else{down=false}
      if (t < p) {
        down = true;
      } else {
        down = false;
      }
      t = p;
      //判断是否到底
      const sign = 10;
      const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
      if (scrollDistance <= sign && down) {
        binding.value()
      }
    })
  }
})


 

Agent框架系列:1-低代码智能体平台深度解析Dify、Coze、n8n Dify、Coze 和 n8n 是三大主流低代码智能体平台,各有侧重。Dify 适合企业级 AI 应用,具备强大的 RAG 和知识库管理能力,技术栈为 Python + React。Coze 由字节推出,主打零代码和快速原型开发,集成 60+ 插件,极适合非技术用户。n8n 以工作流自动化和系统集成为核心,支持 400+ 外部应用,基于 Node.js + Vue,扩展性极强。选择建议:非技术团队选 Coze,AI 应用选 Dify,复杂自动化与集成选 n8n。可根据实际需求混合使用,最大化平台优势。 阅读详情

相关推荐

UWB灵犀遥控器方案介绍

UWB灵犀指向遥控器的技术原理和方案介绍

xiongdauwb的博客 3899

「经典题」Vue获取DOM的几种方法?

Vue实现了MVVM模型,将数据和表现进行了分离,我们只需要更新数据就能使DOM同步更新,但是某些情况下,还是需要获取DOM元素进行操作 本文主要介绍几种在Vue中获取DOM元素的方法 1、使用DOMAPI直接找元素 <script> ... mounted () { let elm = this.$el.querySelector('#id') } </script> Vue组件在patch阶段结束时会把this.$el赋值为挂载的根dom元...

王春燕的博客 1万+

给宇树Go2机器人装‘眼睛’:在Jetson Orin Nano上从零部署YOLOv5的保姆级避坑实录

本文详细介绍了在Jetson Orin Nano上为宇树Go2机器人部署YOLOv5视觉系统的完整流程,涵盖硬件选型、环境配置、模型优化及系统集成等关键步骤。针对机器人应用场景特有的离线部署、版本冲突和实时推理等挑战,提供了实用的解决方案和性能优化技巧,帮助开发者快速实现机器人的视觉能力升级。

weixin_29169505的博客 378

this.$el.querySelectorAll is not a function报错解决

问题描述 使用el-tree时,报错this.$el.querySelectorAll is not a function,导致树无法渲染 问题解析 参考如下代码片段 <el-tree :data="treeData" show-checkbox node-key="id" ref="functionTree" ></el-tree> 此报错多为el-tree绑定的data数据不对,数据错误可分为以下两种:

qq_40896145的博客 2万+

poincare截点

poincare映射定义比较抽象,简单理解就是每个原始周期取一个点,表现在程序中的思路如下: 以激励的周期T0为poincare的原始周期,设置1个周期取m个点,取N个周期设置T0/m为ode45的步长,每个周期的 i*m个点处取一个点(i=0.0-1.0),把这些点画出来就行了。有几个点就是几倍周期。 (注意:ode45算法是变步长的算法,所以一定要之前自己设置步长,我在这个地方吃了很大一个亏...

小树 3008

DeepSpeed Zero3 Offload实战:从GCC版本检查到环境配置的完整避坑指南

本文是一份针对DeepSpeed Zero3 Offload部署的完整避坑指南。针对训练中常见的`AttributeError: ‘DeepSpeedCPUAdam‘ object has no attribute ‘ds_opt_adam`报错,文章深入剖析了其根源在于GCC编译器版本过低。指南提供了从系统GCC版本深度探查、安全启用高版本GCC环境,到DeepSpeed一致性安装验证的全链路实战方案,旨在帮助用户构建稳定的大模型训练环境。

weixin_29070721的博客 474

vue-封装锚点组件

当页面的内容或者文字特别多的时候 我们就需要使用到锚点。但是由于element-ui没有锚点(iview,ant有)。 故自己封装一个锚点页面: 由于锚点的滚动可能和vue路由有冲突,所以我选择自定义函数来实现锚点的滚动 第一种修改路由: (我没有参考这种方法) // 例子,自行封装到你項目的代碼 const router = new VueRouter({ routes, mode: 'history', scrollBehavior (to, from, savedPosition) {

李@@的博客 2556

MT4量化交易入门:手把手教你用MQL4编写第一个外汇EA(含完整代码)

本文详细介绍了如何使用MQL4在MT4平台上编写第一个外汇EA,涵盖从开发环境配置到均线交叉策略实现的完整流程。通过手把手教学和完整代码示例,帮助量化交易新手快速掌握外汇自动化交易的核心技术,实现高效的MT4量化交易系统。

mmm90的博客 527

vue 中选择器的使用

3. 通过 this.$el.querySelector() 方法查找。2、通过 document.querySelector() 方法查找。1、通过 $refs 属性查找。

qq_37570710的博客 988

戴尔G3/AWCC用户必看:揪出WMI Provider Host疯狂占用的元凶,附5.4.35旧版回退保姆级教程

本文针对戴尔G3/AWCC用户遇到的WMI Provider Host异常占用问题,提供了详细的诊断方法和解决方案。通过分析AWCC 5.5.14.0版本的资源占用问题,指导用户回退到稳定版AWCC 5.4.35,并附上保姆级教程和预防措施,帮助用户彻底解决系统卡顿问题。

weixin_30892037的博客 561

永磁同步电机FOC控制实战:如何用线性死区补偿解决低速抖动问题(附Matlab仿真代码)

本文详细介绍了永磁同步电机FOC控制中线性死区补偿技术的工程实现方法,有效解决低速抖动问题。通过Matlab/Simulink仿真验证,该方案可将转矩脉动降低70%以上,显著提升系统稳定性。文章包含完整的数学模型构建、Simulink实现步骤及参数整定技巧,为工程师提供实用解决方案。

weixin_30872499的博客 154

this.$el.querySelectorAll is not a function报错问题

在写页面渲染的时候碰到了一个有关于elementUI和vue的渲染问题, 在使用el-table的时候 由于给 :data=“indexData” 中indexData定义赋值的时候,数值类型不对 导致这种情况,把indexData: {}, 初始化为: **indexData: []**就可以了。 ...

weixin_50723565的博客 8428

YOLOv11【第三章:高阶应用与落地篇·第1节】一文搞懂,YOLOv11-Seg 实例分割:Mask 原型生成与系数预测原理解析!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 1249

Vue的常用指令与自定义指令

Vue允许开发者通过自定义指令来扩展Vue的功能。自定义指令可以操作DOM元素,实现更复杂的逻辑。自定义指令分为局部自定义指令和全局自定义指令。局部自定义指令定义在Vue实例的directives选项中,仅在当前实例中生效。函数式定义是最简单的自定义指令形式,通过一个函数直接操作DOM。参数element:绑定指令的DOM元素。binding:包含指令相关信息的对象,如绑定的值(示例</data: {msg: "自定义指令"},// 将绑定的值设置为元素的文本内容// 设置文本颜色为红色})

奋斗的小前端 783

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

vue中常用的指令和自定义指令

v-on、v-for、v-if、v-show等。自定义指令可以通过Vue.directive()方法来创建。以上代码示例中,v-highlight是自定义的指令,它会将元素的背景颜色设置为指令的参数值。在Vue中,常用的指令有。

2302_80798583的博客 375

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

总结8个常用的Vue自定义指令

Vue 2.X 与 Vue 3.X 相比,钩子函数是存在变化的自定义指令要分全局自定义指令和局部指令全局指令:通过应用实例身上的directive()注册一个全局自定义指令Vue.directive(指令名, { 自定义指令生命周期 })// Vue 2.Xel.focus()})// Vue 3.Xel.focus()})这是一个简单的小案例,通过注册一个v-focus指令,实现一个在页面加载完成后自动让输入框获取焦点的小功能。实现:根据正则表达式,设计自定义处理表单输入规则的指令。

前端工程师 · Vue 生态深耕者,专注多端与工程化 1801

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

vue2中常用的自定义指令

vue2中常用的自定义指令,可以用于扩展 Vue 的功能,处理一些特定的 DOM 操作或交互需求

weixin_45075981的博客 1821

Vue教程 vue常用指令 与 自定义指令

vue常用指令 与 自定义指令常用指令自定义指令 常用指令 v-text : 更新元素的textContent. 可以用{{ }}代替。 <p v-text="msg"></p> <p>{{ msg }}</p> data: { msg : 'Hello World!' } v-html : 更新元素的innerHTML。 <div ...

qq_36723759的博客 178

vue中自定义指令/常用指令

1. **全局指令**:通过 `app.directive` 方法定义全局指令,可以在整个应用中使用。2. **局部指令**:在组件选项中使用 `directives` 定义局部指令,只在该组件内部可用。1. **v-if / v-else / v-else-if**:条件渲染。6. **v-show**:根据表达式的真假值切换元素的显示状态。5. **v-bind**:动态绑定 HTML 属性。3. **v-model**:双向数据绑定。4. **v-on**:绑定事件监听器。// 元素更新时触发。

子玉的博客 494

常用自定义指令-高亮与拖拽【VUE】【一】

本文介绍了Vue中自定义指令的基本概念、核心特征及实现方式,并分享了两个常用的自定义指令代码示例。首先,自定义指令是Vue提供的扩展机制,用于封装对DOM元素的底层操作逻辑,与内置指令不同,需要开发者显式注册。其核心特征包括命名规范、生命周期钩子和参数传递。实现方式分为全局注册和局部注册。接着,文章分享了两个自定义指令的代码:1)搜索文本高亮指令,通过正则匹配搜索关键字并高亮展示;2)页面拖拽指令,通过鼠标事件实现元素在页面中的任意拖拽。这些指令适用于搜索结果展示和浏览器中的智能机器人图标等场景。

取悦于己 1388

概述Vue的常用指令、自定义指令

简述Vue的十个常用指令 v-text 指令 v-bind 指令 v-on 指令 v-if 指令 v-show 指令 v-for指令 v-cloak 指令 v-pre 指令 v-once 指令 v-model 指令 v-text 该指令可以为html中的元素内容进行赋值操作,形如<any v-text="model层当中的变量名称"></any>,这段代码也等价于&lt...

Ironhide的博客 318

推荐15个 Vue 常用自定义指令,含实现原理与使用方式

Vue.js 是一个流行的前端框架,它的核心理念是通过指令(Directives)来扩展 HTML 的能力。尽管 Vue.js 已经内置了一些非常实用的指令(比如 v-if, v-show, v-for 等),但有时候我们还是需要创建自定义指令来满足特定的需求。今天我们就来聊聊 Vue 常用的自定义指令,它们能让你的代码更加简洁和高效。如果你希望在页面加载时,某个输入框自动获得焦点,可以创建一个 v-focus 指令。这个指令可以帮你省掉在 mounted 钩子里写 DOM 操作的麻烦。

乐闻世界 3171

vue自定义指令及常用的自定义指令封装

本文主要是vue2以及vue3自定义指令的定义及使用,包含一些常用自定义指令的写法

greed 1751

Vue3 常用自定义指令实现

本文介绍了Vue自定义指令的封装与使用,主要包括以下几个指令;这些指令通过directives/index.ts统一注册,在main.ts中全局安装,使用方式简洁高效。每个指令都包含完整的生命周期处理,并提供了良好的类型提示。

织网的博客 402

VUE自定义指令 + 常用指令

在 Vue,除了核心功能默认内置的指令 ( v-model 和 v-show ),Vue 也允许注册自定义指令。它的作用价值在于当开发人员在某些场景下需要对普通 DOM 元素进行操作。

weixin_46809263的博客 258

vue常用指令以及自定义指令

vue常用指令以及自定义指令

m0_52669454的博客 570
上一篇: js动态修改浏览器导航栏图标和文字
下一篇: import和require的区别
攻城狮狮
博客等级 码龄9年 727粉丝 78原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城狮狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值