vue的修饰符都有哪些(详解Vue的sync修饰符)
vue的修饰符都有哪些
详解Vue的sync修饰符目录
- 1 、指令
- 2 、修饰符
- 3、 .sync 修饰符
- 4 、总结
指令即 Directive,从字面意思理解就是我告诉你要做什么,就是发送了一个指令,然后由接收指令的人去做就好了。在 Vue 中的指令有个统一好认的格式,就是以 v-
开头的就是指令,如:
<li v-text="x"> </li> //v-text指定标签文本指令 <li v-on:click="add"> <li> //v-on事件绑定指令
但并不是所有的指令都以 v- 开头,对于一些简写,也是指令,如
<img :src="x"> </img> //v-bind:src 的简写 <button @click="add"> </button> //v-on:click 的简写
修饰符是与指令中的事件处理指令 v-on 息息相关的一个语法糖,所谓语法糖就是很 sweet,简单好用,在编程界就是能帮你做好的都帮你做了,只剩最简单的事留给你做。
在事件处理程序中,有一些非常常见的需求,例如 event.preventDefault() 阻止默认事件和 event.stopPropagation()阻止事件冒泡等等。因此 Vue 就把这些事件处理过程中常见的需求帮我们处理好了,在我们需要时告诉 Vue 一声,它就会自动帮我们阻止默认事件、阻止事件冒泡等。那么我们告诉 Vue 的途径就是 Vue 提供给我们的修饰符,修饰符是由点开头的指令后缀来表示的
以阻止 <a> 标签的点击默认刷新页面事件的 preventDefault 方法示例如下:
普通做法
<a href="" v-on:click=" rel="external nofollow" pe($event)">Vue点击链接</a> //vue中访问原始的DOM事件,可以用特殊变量 $event 把它传入方法,在原始 HTML 中是 event
// ... methods: { pe(e){ e.preventDefault() } }
使用修饰符
<a v-on:click.prevent>Vue点击链接</a> //prevent修饰符就等同于上述的 e.preventDefault()
由上述的小例可以看出,修饰符是不是个语法糖,帮我们把常用的需求提前写好了,用的时候说一声就行。当有事件处理程序时直接在后面继续写即可,如下:
<a href="" v-on:click.prevent=" rel="external nofollow" pp">Vue点击链接</a>
// ... methods: { pp(){ console.log('不跳转页面执行事件') } }
修饰符是有顺序地执行的,如上述的 v-on:click.prevent="pp",意思就是在点击时,先执行修饰符 prevent 的阻止默认事件,然后再执行后面的 pp 事件处理函数。
修饰符几乎是和事件 event 的相关处理函数一一对应的,根据事件的不同,对应不同事件的修饰符,如下所示分为几大类:
修饰符的来源和含义就是上述所述,至于具体有哪些,在实际用到时可去官网查找所需,有两个最最常用的需要记住,即 @click.stop 是阻止事件冒泡,@click.prevent 是阻止默认事件,@keypress.enter 是按键为回车事件。
3、 .sync 修饰符.sync 修饰符相对来说比较特殊,因为其不是事件 event 原有的事件处理相关函数的演变,而是 Vue 自己定义的一个修饰符,如上述的修饰符分类中也将 .sync 分类为自定义事件的修饰符,那么这个自定义事件到底是什么事件呢?
这个事件对应的是 eventBus 事件,eventBus 事件是 MVC 中的一个模式,简单来说就是发布和订阅的过程,就是说有两方,甲方负责始终监听某个事件,乙方负责在需要的时候触发这个事件,甲方在监听到事件被触发时就执行某些操作。甲方就是订阅,乙方就是发布,双方就是发布和订阅模式。
那么在 Vue 中在什么时候会需要用到这种情况呢?
就是在 Vue 的组件在接受外部数据 props 时,Vue 规定,子组件在通过 props 接受外部数据后只有使用该数据的权利,但没有修改该属性的权利。因为,如果子组件修改了外部传来的数据,这样一来子组件和使用其的父文件都可以改来改去,在父组件和子组件都没有明显的改动来源,到最后都不知道这个数据是谁改的了,数据就不好控制了。因此 Vue 就规定组件只能有权使用 props 的属性,不得自己改变,那么若其想要改变,就必须通知该数据的真正拥有者改变,也就是使用该组件的父文件。
其使用的通知方式就是 eventBus 发布和订阅模式。
不使用 .sync
子组件触发事件,事件名格式必须是 update:myPropName ,用 $emit 函数触发
this.$emit('update:title', newTitle) //newTitle就是你想要修改props数据修改后的值
父组件可以监听那个事件并根据需要更新一个本地的数据属性
<myconponent :title="Ptitle" @update:title="Ptitle = $event" ></myconponent> //在父组件中监听该事件,该事件触发后传递的值以 $event 接收,$event === newTitle ,Ptitle是父组件的数据
或者是定义的接受函数的参数
<myconponent :title="Ptitle" @update:title="val => Ptitle = val" ></myconponent> //这时接收的值作为函数的参数
使用 .sync
上述的过程在实际需求中很常用,因此 Vue 就将父组件的监听定义成了一个传值时的修饰符,为 .sync ,上述代码使用 .sync 修饰符后为:
子组件(是一样的)
this.$emit('update:title', newTitle)
父组件
<myconponent :title.sync="Ptitle"></myconponent> //等同于上面的传值并监听
是不是很 sweet 呢?
4 、总结.sync 的用法规则
1.组件不能修改 props 外部数据
2.this.$emit 可以触发事件,并传参
3.$event 可以获取 $emit 的参数
以上就是详解Vue的sync修饰符的详细内容,更多关于Vue的sync修饰符的资料请关注开心学习网其它相关文章!
- vueelementui三级菜单(vue+element ui实现锚点定位)
- icon图标怎么引入vue(vue引入iconfont图标库的优雅实战记录)
- vue3.0怎么往标签填数据(Vue3.0写自定义指令的简单步骤记录)
- vue 计算一段时间的月份和天数(vue实现指定日期之间的倒计时)
- vue react和angular(详解React Angular Vue三大前端技术)
- springbootvue数据交互系统(Springboot运用vue+echarts前后端交互实现动态圆环图)
- vuecli打包项目(使用vue-cli创建项目并webpack打包的操作方法)
- vue 组件布局(Vue实现固定底部组件的示例)
- vue双向数据绑定js如何实现(纯JS如何实现vue.js下的双向绑定功能)
- vuecli项目入门(vue-cli4.5.x快速搭建项目)
- vue怎么配置到idea(idea编译器vue缩进报错问题场景分析)
- vue用手动上传图片(vue上传图片文件的多种实现方法)
- vue函数中的默认参数(Vue3中SetUp函数的参数props、context详解)
- vue实现双向绑定原理(vue实现双向数据绑定)
- vue项目做过哪些打包优化(Vue项目优化的一些实战策略)
- vue找不到水印设置(Vue使用自定义指令实现页面底部加水印)
- 八一节,说说中国女兵(八一节说说中国女兵)
- 王治郅菜鸟赛季已让八一带入正轨,大郅七大经典语录或是成功秘诀(王治郅菜鸟赛季已让八一带入正轨)
- 庆八一,重读经典红色语录,感悟互联网发展硬道理(重读经典红色语录)
- TVB新剧《黯夜守护者》将播,陈展鹏陈炜首次合作探讨人性(TVB新剧黯夜守护者将播)
- 新晋小花被称女版吴卓羲 将取代滕丽名成为TVB新一代御用女警(新晋小花被称女版吴卓羲)
- 艺人吴卓羲10年警察生涯,演足10年阿Sir,系咩玩法(艺人吴卓羲10年警察生涯)
热门推荐
- javapoi简单代码(Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法)
- SQLServer设置客户端使用IP地址登录的图文详解(SQLServer设置客户端使用IP地址登录的图文详解)
- 如何用python做一个弹窗(python实现祝福弹窗效果)
- docker和golang哪个好(使用Golang玩转Docker API的实践)
- 树莓派vnc设置失败(树莓派安装宝塔面板后VNC无法登陆的问题说明)
- asp.net使用swfupload上传
- dedecms修改发布时间(织梦DEDECMS中的时间格式代码汇总)
- python包和模块管理(python的依赖管理的实现)
- 阿里云注册域名ddns怎么写(如何通过阿里云实现动态域名解析DDNS的方法)
- sql设计数据库过程文字详述(Sql Server 数据库中调用dll文件的过程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9