Vue入门教程--自定义指令使用详解(article:12)

vue自定义指令directive的使用方法 主要介绍了vue自定义指令directive的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 立即下载

Vue.js 初步入门


功能简介

我们在前端编程时,有些功能vue并没有进行封装,我们需要这些功能的时候,就需要自己进行手动封装了,vue提供了自定义指令的功能,让我们可以随心所欲进行自定义指令的封装。
举个简单的例子,如果我写了一个简单的表单,我想在一开始加载这个页面的时候就能第一时间聚焦到第一个输入账号的框上,解决方案有两种,第一种就是利用HTML5中input标签自带的属性autofocus来自动聚焦到框上,第二种就用调用该标签的DOM中的.focus()方法也能做到同样的效果。
这时候本着不用DOM的思想理所当然的将第二种方式进行改进,就是进行自定义指令的封装。

全局自定义指令:Vue.directive("指令名",{钩子函数:function(el){用原生js操作el}});
局部自定义指令:directives:{指令名:{钩子函数:function(el){用原生js操作el}}

其中,el表示指令所绑定的元素,可以用来直接操作 DOM
一个指令定义对象可以提供如下几个钩子函数 (均为可选):
bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。
inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。
update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。

使用详情

上面的三个是常使用的钩子函数,自定义全局指令具体用法如下:

		Vue.directive("focus",{
			inserted:function(el){
				el.focus();
			}
		});

<input id="inin" type="text" placeholder="我的输入框" v-focus/>

我们用v-指令名来调用自定义的属性,效果和调用DOM时一模一样,局部指令用法如下:

	new Vue({
			el:"#app",
			data:{
				msg:'hello world'
			},
			directives:{focus:{
				inserted:function(el){
					el.focus();
				}
			}}
		});

钩子函数还包含许多参数,比如(el,binding,vnode,oldVnode)。
el:指令所绑定的元素,可以用来直接操作 DOM 。
binding:一个对象,包含以下属性:

  • name:指令名,不包括 v- 前缀。
  • value:指令的绑定值,例如:v-my-directive=“1 + 1” 中,绑定值为 2。
  • oldValue:指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
  • expression:字符串形式的指令表达式。例如 v-my-directive=“1 + 1” 中,表达式为 “1 + 1”。
  • arg:传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 “foo”。
  • modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对- 象为 { foo: true, bar: true }。

其他指令为高级阶段,不再赘述。

函数简写

在很多时候,你可能想在 bind 和 update 时触发相同行为,而不关心其它的钩子。比如这样写:

		Vue.directive("focus",{
			function(el,binding){
				el.focus();
				console.info(binding.expression);
			}
		});

Vue.directive自定义指令的使用详解 很多教程都是在讲自定义指令的概念和语法,看的相当蛋疼.本文不讲语法和概念,只讲用法. 自定义指令基本就是用来操作DOM的,虽然官方推荐数据驱动视图,有时候还是需要自定义指令来操作DOM,指令可复用. 1. 自定义指令实现拖拽 HTML: <div>我可以拖拽</div> JS: Vue.directive('drag', inserted:function(el){ //inserted 钩子函数:当元素被插入父元素时触发,可省略 let oDiv=el; //el --> 触发的DOM元素 oDiv.onmousedown=function(e){ 立即下载

相关推荐

MoveIt2 Servo实战:解锁UR机械臂在ROS2中的实时遥操作与动态响应

本文深入探讨了MoveIt2 Servo在UR机械臂实时遥操作中的应用,展示了如何通过ROS2实现毫秒级动态响应。文章详细解析了Servo的核心价值、环境配置、控制器适配及高级调优技巧,特别适用于需要高精度控制的工业场景,如VR手术训练和汽车装配线。

weixin_29044157的博客 247

Vue入门教程--Vue的第一个实例(article:1)

Vue.js 初步入门 框架介绍 什么是vue Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。 Vue 只关注视图层, 采用自底向上增量开发的设计。 Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 Vue 学习起来非常简单,本教程基于 Vue 2.1.8 版本测试。 学习vue的前提 学习vue之前...

DuCeh的博客 558

基于E310的纯逻辑代码实现AD9361射频收发

基于微相科技的E310平台实现AD9361的射频收发功能。采用纯逻辑控制的方式,不需要PS参与。实现了用VIO控制收发使能,发射功率,收发频率,数据接口时序控制,接收增益,BIST测试等功能。

xiaomingzi55的博客 2331

Vue入门教程--vue的生命周期函数详解(article:13)

Vue.js 初步入门 vue有8大生命周期函数,“生命演变”如图所示: 生命周期函数阶段分为四类:创建阶段、挂载阶段、更新阶段,和销毁阶段。 beforeCreate:实例创建之前调用 created:实例创建成功,此时 data 中的数据显示出来了 beforeMount:数据中的 data 在模版中先占一个位置 mounted:模版中的 data 数据直接显示出来了 beforeUpd...

DuCeh的博客 340

SAP成本计划BAPI接口BAPI_COSTACTPLN_POSTPRIMCOST深度解析与实战指南

在SAP ERP系统中,成本计划是财务与控制模块的核心功能,它涉及对企业未来成本支出的预测与规划。其原理是通过结构化数据模型,将成本要素分配到具体的成本对象上,以实现预算编制和成本控制。这一技术的核心价值在于实现成本数据的标准化、自动化处理,从而提升财务流程效率与数据准确性。在应用场景上,成本计划广泛应用于年度预算编制、项目成本预测、系统间数据集成以及历史数据迁移等关键业务环节。本文聚焦于实现上述流程自动化的关键技术——SAP标准接口BAPI_COSTACTPLN_POSTPRIMCOST,并深入探讨其在高

weixin_29657209的博客 349

手把手教程:使用C#实现工业上位机开发

深入讲解如何利用C#进行上位机开发,涵盖通信协议与界面设计,助力掌握工业自动化核心技能。结合实际案例,让上位机开发更高效直观。

weixin_32480007的博客 2064

Vue入门教程--键值修饰符使用详解(article:11)

Vue.js 初步入门 日常上网会有这样的场景,当你登录一个网站的时候,可以点击网页上的登录按钮,或者也可以用手指点击回车键登录,js需要监听键盘的按下(onkeydown)或抬起(onkeyup)事件以进行一些操作。vue提供了这样的事件绑定按键的功能。 按键修饰符:.enter .tab .delete .esc .space .up .down .left .right 使用详情 &l...

DuCeh的博客 520

Stable Diffusion 模型分享:Beautiful Realistic Asians(美丽真实的亚洲人)

Beautiful Realistic Asians(BRA)模型是由作者自己训练而成的一个独立模型,它是一个真实模型,并且是一个针对亚洲人训练的模型,可以生成非常漂亮的亚洲小姐姐。条目内容类型大模型基础模型SD 1.5来源CIVITAI作者文件名称文件大小1.99GB。

水滴的博客 2156

Vue实战知乎日报(4)--daily-article组件

daily-article是知乎日报中最重要的内容板块: 单独列出来,作具体分析: 内容板块包括主题title,内容content,以及评论区comments 内容渲染主要通过watch监控id变化时触发getArticle函数渲染,使用来自util配置的ajax(引用了axios模块), 通过正则匹配对应src的内容替换res.body的src内容成图片路径,将数据返回给内容,回滚顶...

Beq 1201

apollo-减速带通行

主车在通过减速带时速度不超过3m/s

是菜鸟o的博客 387

手把手教你学Simulink——四开关 Buck‑Boost(FSBB)变换器的无缝模式切换仿真

本文详细介绍了四开关Buck-Boost(FSBB)变换器的Simulink仿真方法,重点解决模式切换时的直通风险和输出电压波动问题。通过统一电压PI控制、迟滞比较模式仲裁(Buck/Boost/Pass-Through)和200ns死区设计,实现了Vin从26V到22V变化时Vout稳定在12V±0.15V。关键步骤包括:搭建功率级电路、Stateflow模式判断、PI控制器输出占空比映射(Buck模式D≈Vo/Vin,Boost模式D≈1-Vo/Vin),以及带死区的PWM信号分配。仿真验证了切换过程中

MHD0815的博客 115

Vue组件的封装与引用

封装 Vue 组件并引用其实很简单,可以按照以下步骤进行:在 Vue 项目中的 src/components 目录下创建你的组件文件夹,并在其中创建一个 .vue 文件。在这个 .vue 文件中编写你的组件逻辑和模板代码。确保将组件内部需要暴露出来的数据使用 props 属性传递给父组件。导出该组件,可以使用 export default 或者 export 关键字导出组件对象。在需要使用该组件的父组件中,通过 import 引入组件,然后将该组件作为子组件使用。

qq_46100001的博客 758

海康VisionMaster与西门子PLC1200进行S7通信

通信是连通算法平台和外部设备的重要渠道,在海康VisionMaster算法平台中既支持外部数据的读入也支持数据的写出,当通信构建起来以后既可以把软件处理结果发送给外界,又可以通过外界发送字符来触发相机拍照或者软件运行。 本文以西门子PLC1200作为外部设备为例,讲解海康VisionMaster与西门子PLC1200进行S7通信。......

haier123888的博客 1万+

Vue入门教程--vue的组件功能Component详解(article:16)

Vue.js 初步入门 组件(Component)是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素,封装可重用的代码。 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树: 使用简介 注册一个全局组件:Vue.component('组件名称', {配置选项}) 注册一个私有组件:components:{'组件名称':{配...

DuCeh的博客 1417

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Vue入门教程--v-for循环属性详解(article:7)

Vue.js 初步入门 属性介绍 v-for :用来对元素、对象等进行遍历的属性 使用详解 1. v-for v-for 1. 用v-for遍历简单数组 data:{ list:[1,2,3,4,5,6] }, <p v-for="(item,index) in list">{{item}}-----{{index}}</p> 其中,list是数据集,item是...

DuCeh的博客 1229

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Vue入门教程--对元素进行样式绑定详解(article:6)

Vue.js 初步入门 方法简介 使用class绑定样式。 使用内联样式style绑定。 使用详情 原生js中,样式的绑定有两种,第一种是直接在标签属性style里赋予自己想自定义的属性: <div id="container"> <div style = "color:'blue'"> {{hello}} </div>...

DuCeh的博客 876

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

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

Vue入门教程--过滤器的使用详解(article:10)

Vue.js 初步入门 细节说明 js中的数组在es6中增加了新的过滤器方法,.filter来过滤掉用户不想要的数据部分或者替换成自己想展现的数据。 vue中也为我们提供了类似的过滤器用来过滤插值表达{{}}以及其他部分的数据,且它分为全局过滤器和(私有)局部过滤器。 全局过滤器:Vue.filter('过滤器名称',function(data,arg1,arg2,...){return 过滤...

DuCeh的博客 508

深入浅析HTML5中的article和section的区别,前端自定义view面试

article元素代表文档、页面或应用程序中独立的、完整的、可以独自被外部引用的内容。它可以是一篇博客或报刊中的文章、一篇论坛帖子、一段用户评论 或独立的插件,或其他任何独立的内容。除了内容部分,一个article元素通常有它自己的标题(一般放在一个header元素里面),有时还有自己的脚 注。

m0_57502067的博客 3429

Vue入门教程--v-model数据的双向绑定详解(article:5)

Vue.js 初步入门 属性介绍 v-model :唯一一个可以实现双向数据绑定的属性 使用详解 1.v-model 原生js中,要是想将标签元素上嵌入自定义数据,必须增加一个data-*的属性来嵌入: <button type="button" data-myData = "hello vue.js" onclick="handleBtn(this)">按钮</button...

DuCeh的博客 520

Vue入门教程--vue的监听属性watch详解(article:15)

Vue.js 初步入门 watch:Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化。 使用简介 watch属性,可以监听data属性域中的数据变化,并可以事实采用函数相应变化。 首先在data域中定义一个msg属性,用来被监听。 data:{ msg:'hello vue' } 接着,我们将data中的数据用v-model实时绑定到自定义的文本框中。 &l...

DuCeh的博客 577

Vue入门教程--vue的Ajax(axios)请求详解(article:17)

Vue.js 初步入门 Vue.js Ajax(axios) Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求。 所以必须先引入axios.js文件。 但凡知道一点JQuery基础的,都会对ajax请求有所了解,下面写一个简单的ajax请求: $.ajax({ url:"demo_test.txt", type:'GET', data:{k1:v1,k2:v...

DuCeh的博客 567

Vue入门教程--事件修饰符的设置详解(article:4)

Vue.js 初步入门 修饰符介绍 .stop :阻止冒泡

DuCeh的博客 476

Vue入门教程--vue的计算属性computed详解(article:14)

Vue.js 初步入门 computed:计算属性,在处理一些复杂逻辑时是很有用。 我们在处理一些字符串或者一些表达式的计算的时候,写在插值表达式或者data域中是非常复杂且不美观的,比如这个: {{"abcde".toLocaleUpperCase()}} data:{ result1:"abcde".toLocaleUpperCase() } 甚至可以写个方法来计算: methods...

DuCeh的博客 336

自定义指令的用法和插槽的用法示例

【代码】自定义指令的用法和插槽的用法示例。

yh_31的博客 308

Vue入门教程--v-if与v-show属性的使用详解(article:8)

Vue.js 初步入门 属性介绍 v-if :对传入值进行判断,true则向用户显现元素,false则隐藏起来 v-show :对传入值进行判断,true则向用户显现元素,false则隐藏起来 v-if & v-show 使用详解 v-if顾名思义是用来做判断是否让元素显示的属性,而vue也提供了另一种v-show来用不同的方式实现这一功能。 data:{ hello:"hello...

DuCeh的博客 1177

Vue入门教程--学习注意项细节知识点小结(article:9)

Vue.js 初步入门 细节说明 v-on中的方法名称一般会写作v-on:click=(xxx),这是v-on:click=(xxx())的神略写法,唯一区别是,要是方法有形参,必须加上括号写上形参。如下: v-on:xxx=(xxx(xx))或者:xxx=(xxx(xx)) v-text或者其他属性里的data域变量不用再加列如这样v-text="{{xxx}}"的插值表达式,直接...

DuCeh的博客 312
上一篇: Vue入门教程--键值修饰符使用详解(article:11)
下一篇: Vue入门教程--vue的生命周期函数详解(article:13)
DuCeh
博客等级 码龄10年 7粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值