作者:Smile--麦芽 | 来源:互联网 | 2023-09-08 19:23
目录一、事件处理器1.事件修饰符2.发送一次3.按键修饰符二、自定义组件1组件简介2全局和局部组件3props三、组件通信自定义事件1.子传父2.组件总结定义
目录
一、事件处理器
1.事件修饰符
2.发送一次
3.按键修饰符
二、自定义组件
1 组件简介
2 全局和局部组件
3 props
三、 组件通信
自定义事件
1.子传父
2.组件总结
定义:template
父传子:props
子传父:通过$emit注册事件名
this.$emit('事件名',....) 这里一般是json对象
四、 表单综合案例
五、总结
1.事件处理器
2.简单组件
3.父传子
4.子传父
5.综合案例表单
一、事件处理器
事件监听可以使用v-on 指令
1.事件修饰符
Vue通过由点(.)表示的指令后缀来调用修饰符,
.stop
.prevent
.capture
.self
.once
...
...
注1:什么是事件冒泡?
也就是可以这样理解为:当我点击div就会弹出div,传播到body,在到document
解决方法:阻止冒泡
就不会传播了
2.发送一次
为了防止有些人,一直点击发送按钮,有可能是因为它的网络慢,或者其他,它就一直在哪里点,每点击一次就会像后台发送一次请求
演示:
解决方法:
运行结果:
3.按键修饰符
Vue允许为v-on在监听键盘事件时添加按键修饰符:
Vue为最常用的按键提供了别名
enter = 13 它们两是同一个意思 回车键
全部的按键别名:
.enter
.tab
.delete (捕获 "删除" 和 "退格" 键)
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta
运行结果如图所示:
二、自定义组件
如果是前端框架,这个自定义组件是要深入的去了解
vue组件
1 组件简介
组件(Component)是Vue最强大的功能之一
组件可以扩展HTML元素,封装可重用的代码
组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树
2 全局和局部组件
全局组件:Vue.component(tagName, options),tagName为组件名,options为配置选项。
局部组件: new Vue({el:'#d1',components:{...}})
注册后,我们可以使用以下方式来调用组件:
3 props
props是父组件用来传递数据的一个自定义属性。
父组件的数据需要通过props把数据传给子组件,子组件需要显式地用props选项声明 "prop"
注1:因为组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项,例如 data、computed、watch、methods
以及生命周期钩子等。仅有的例外是像el这样根实例特有的选项。
注2:当我们定义这个 组件时,你可能会发现它的data并不是像这样直接提供一个对象
data: {
count: 0
}
取而代之的是,一个组件的data选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝:
data: function () {
return {
count: 0
}
}
注3:定义组件名的方式有两种
短横线分隔命名(建议使用)
Vue.component('my-component-name', { /* ... */ }),引用方式:
首字母大写命名
Vue.component('MyComponentName', { /* ... */ }),引用方式: 和都是可接受的
注4:HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符。这意味着当你使用 DOM 中的模板时,
camelCase (驼峰命名法) 的 prop 名需要使用其等价的 kebab-case (短横线分隔命名) 命名:
props: ['postTitle'],
注5:props: ['title', 'likes', 'isPublished', 'commentIds', 'author']
希望每个 prop 都有指定的值类型
props: {
title: String,
likes: Number,
isPublished: Boolean,
commentIds: Array,
author: Object,
callback: Function,
contactsPromise: Promise // or any other constructor
运行结果如图所示:
三、 组件通信
自定义事件
监听事件:$on(eventName)
触发事件:$emit(eventName)
注1:Vue自定义事件是为组件间通信设计
vue中父组件通过prop传递数据给子组件,而想要将子组件的数据传递给父组件,则可以通过自定义事件的绑定
父Vue实例->Vue实例,通过prop传递数据
子Vue实例->父Vue实例,通过事件传递数据
注2:事件名
不同于组件和prop,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完全匹配监听这个事件所用的名称
建议使用“短横线分隔命名”,例如:three-click
1.子传父
子组件 将参数 传递给 父组件 的关键在于下面这两个,要满足下面的两个条件
1.$emit 2.自定义事件
this.$emit('事件名',{})
代码块:
2.组件总结
定义:template
父传子:props
子传父:通过$emit注册事件名
this.$emit('事件名',....) 这里一般是json对象
四、 表单综合案例
运行结果如图所示:
五、总结
1.事件处理器
阻止冒泡和只能发送一次还有按键的修饰符等等
阻止冒泡就是为了传播,当点击最外面一层,就不会传播,点击最里面的就会传播到最外面停止,
就好像河里的水,当你去点击水面的时候,它就会从内传播到外,直到停止。
发送一次指的的就是,只能向服务发送一次请求,这样就可以减少服务的压力,为了防止某人手不安分,它没反应就一直在哪里狂点。
按键修饰符指的就是键盘的按键事件,就是不需要鼠标点击,直接用键盘回应,就好比如我们登陆,我们每登陆一个账号都会有一个确定或者注册等等,我们就可以用按键的修饰符来完成,我们就用回车键就可以直接进去登陆,不需要用鼠标移到来点击那个按钮。
2.简单组件
通过component里面有两个参数,一定组件名字,二是模板
Vue.component('定义的组件名称',{
模板:template:[标签]
})
3.父传子
是要通过在模板里面写 props:['','',...] 这里面就是你父标签里面的参数,有多少放多少
4.子传父
子组件 将参数 传递给父组件要满足两个条件,一是$emit ,二是自定义事件
this.$emit('自定义事件',参数)
5.综合案例表单