位置: 编程技术 - 正文

详解Vue用自定义指令完成一个下拉菜单(select组件)(vue自定义方法)

编辑:rootadmin

推荐整理分享详解Vue用自定义指令完成一个下拉菜单(select组件)(vue自定义方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue自定义dialog,vue自定义指令两种方式,vue自定义指令两种方式,vue 自定义 v-model,vue自定义方法,vue 自定义 v-model,vue自定义dialog,vue自定义dialog,内容如对您有帮助,希望把文章链接给更多的朋友!

这次分享的是关于Vue自定义指令的使用方法,学习完基础后我们再来实战完成一个下拉列表,废话不多说,直接上干货

基本用法

相信对Vue比较熟悉的人看完都知道,directive的写法与组件 基本类似,只是方法名由component改为了directive。上例只是注册了自定义指令v-my-directive,还没实现具体功能,下面具体介绍 自定义指令的各个选项。

指令定义函数提供了几个钩子函数 (可选):

bind:只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。 inserted:被绑定元素插入父节点时调用 (父节点存在即可调用,不必存在于 document 中)。 update:所在组件的 VNode 更新时调用,但是可能发生在其孩子的 VNode 更新之前。指令的值可能发生了改变也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。 componentUpdated:所在组件的 VNode 及其孩子的 VNode 全部更新时调用。 unbind:只调用一次,指令与元素解绑时调用。

可根据需求在不同的钩子函数 内完成逻辑代码,如下面v-focus,我们希望在元素插入父节点时就调用,那用到的最好的就是inserted了。示例代码如下

效果如下图所示

自定义指令 v-focus.png

详解Vue用自定义指令完成一个下拉菜单(select组件)(vue自定义方法)

可以看到,打开这个页面,input输入框就自动获取焦点了,成为可输入状态。

每个钩子函数 都可以有几个参数可用,比如我们上面用到了el。它们 的含义如下:

el:指令所绑定的元素,可以用来直接操作 DOM 。 binding:一个对象,包含以下属性: name:指令名,不包括 v-前缀。 value:指令的绑定值,例如:v-my-directive="1 + 1", value 的值是 2。 oldValue:指令绑定的前一个值,仅在 update和 componentUpdated钩子中可用。无论值是否改变都可用。 expression:绑定值的字符串形式。例如 v-my-directive="1 + 1" ,expression 的值是 "1 + 1"。 arg:传给指令的参数。例如 v-my-directive:foo,arg 的值是 "foo"。 modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar, 修饰符对象 modifiers 的值是 { foo: true, bar: true }。 vnode:Vue 编译生成的虚拟节点,查阅 VNode API 了解更多详情。 oldVnode:上一个虚拟节点,仅在 update和 componentUpdated钩子中可用。

下面是结合了以上参数 的一些具体示例,代码如下

执行后,<div>的内容会使用innerHTML重置,结果为

在多数使用场景,我们会在bind钩子里绑定一些事件,比如在document上用addEventListerer绑定,在unbind里有removeEventListener 解绑,比较典型的示例就是让这个元素随着鼠标拖拽。

如果需要更多个值,自定义指令也可以传入一个JavaScript对象字面量, 只要是合法类型的JavaScript表达式都是可以的。示例代码如下:

Vue 2.x很移除大量Vue 1.x自定义指令的配置。在使用自定义指令时,应该充分解业务需求,因为很多时候你需要的可能并不是自定义指令,而是组件。

基础的东西讲完了,我们来根据directive提供的API来写一个点击外部区域可以让其下拉列表消失的菜单

要在document上绑定click事件,所以在bind钩子内声明了一个函数documentHandler,并将它作为句柄定在document的click事件上。documentHandler函数做了两个判断,第一个是判断点击的区域是否是指令所在的元素内部,如果是,就跑出函数,不信下继续执行

contains方法是用来判断元素A是否包含了元素 B,包含返回true,不包含返回false

第二个判断是当前 的指令v-clickoutside有没有写表达式,在该自定义指令中,表达 式应该是第一个函数 ,在过滤了内部元素后,点击外面任何区域应该招待用户表达 式中的函数 ,所以binding.value就用来执行上下文methods中指定的函数的

标签: vue自定义方法

本文链接地址:https://www.jiuchutong.com/biancheng/375843.html 转载请保留说明!

上一篇:Vue实战之vue登录验证的实现代码(用vue写登录页面)

下一篇:Vue异步加载about组件(vue异步加载第三方库)

  • 视同内销增值税怎么申报
  • 记账更改的方法
  • 增值税普通发票需要交税吗
  • 小规模销售产品会计分录
  • 限售股在锁定期内卖出
  • 委托加工物资需要计提存货跌价准备吗
  • 法院判决书能做证据使用吗
  • 代理缴费业务主要包括
  • 确认主营业务成本的依据是什么单据
  • 金税系统年度维护费发票抵扣需要认证吗?
  • 地方教育费附加减免政策
  • 酒店式公寓配套服务包括哪些
  • 会计案例分析题万能模板
  • 学校的房子归哪里管
  • 购进农产品怎么做账
  • 公司车贷款还款怎么操作
  • 税务总局关于四流一致解答
  • 个体户税务年报每年什么时候
  • 去年的财务费用忘记帐能入今年的账吗?
  • 没有发票的怎么报账
  • 发票备注栏的填写规定
  • 取得土地所有权范围内的树如何处理
  • php嵌入js
  • 关于激活函数的说法错误的是
  • 公司报销医疗费的范围
  • ErrorCaptureStackTrace(err); Error [ERR_MODULE_NOT_FOUND]: Cannot find module
  • 房地产开发企业涉及哪些税
  • 土建工程付款方式比例
  • laravel dump
  • 双峰骆驼什么意思
  • 制作个性化的奖杯或者奖状
  • AI:DeepSpeed Chat(一款帮用户训练自己模型的工具且简单/低成本/快 RLHF 训练类ChatGPT高质量大模型)的简介、安装、使用方法之详细攻略
  • 税务变更登记需要带的资料有哪些
  • css设置背景图片填充
  • 旅行社的会计分录怎么做
  • 工业企业应收应付会计怎样
  • 哪些增值税发票不可以抵扣
  • 帝国cms8.0
  • 织梦产品详情页相关产品推荐调用代码
  • mysql5.5命令
  • 公司出租房屋如何开票
  • 预缴所得税年底处理账务吗
  • 让税务局代开的发票直接交纳的税金如何做会计分录?
  • 当月进项发票忘认证又开了销项税额怎么办
  • 以前年度损益调整会计分录
  • 收购固定资产账务处理
  • 存货跌价准备的账务处理
  • 不征税收入与免税收入的区别是什么
  • 购买空调报销写什么科目的
  • 为什么银行结息不加入账户
  • 场地租赁费属于劳务还是服务
  • 待处理财产损益的账务处理
  • 水电费进项税额转出20%
  • 企业收到的政府补助属于
  • 工会发放节日慰问品种类
  • 劳务费打到私人账户
  • 商品买一送一应该怎么写
  • 保理融资的费用由谁承担
  • 会计为什么要计提费用
  • 企业视同销售的情况都有哪些?
  • 融资租出固定资产的账务处理
  • 小规模纳税人发票可以抵扣吗
  • 日记账的设置
  • ubuntu configure
  • OS X 10.12.6 beta 1如何更新 OS X 10.12.6 beta 1如何升级
  • 如何将iPhone照片导入电脑
  • centos hosts
  • win1020h2版本千万别更新
  • windows7库功能
  • WIN10系统中WPS字体颜色浅
  • win7 64位旗舰版电脑被唤醒之后显示器依然黑屏怎么办?
  • windows visual studio 基于openGL的粒子系统设计
  • 批处理显示
  • 精灵动画片大全90年代
  • 怎么使用vue和axios连接后端
  • js响应事件的过程
  • 超链接打开比较合适的方式是什么
  • 广东省电子税务局网上办税大厅
  • 杭州汽车摇号中签率多少
  • 国税查票系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设