要想做一个功能复杂的前端应用,离不来用户的交互,而与交互密切关联的就是事件。
数据绑定与事件绑定,一个绑定的是数据,一个绑定的是具体的操作
1.vue如何处理事件:
v-on指令用法 <div> <button type="button" v-on:click="num++">点击</button> </div> <div v-text="num"></div> data: { num:0 } v-on简写形式 <button type="button" @click="num++">点击</button>随着操作的增多,方法定义开始出现:
2.事件函数的调用方式:
var vm=new Vue( { el:'#app', /*用于告诉vue数据的填充位置,利用id等进行标注*/ data: { msg:'hello vue', /*用于提供数据*/ msg1:'<h1>HTML</h1>', num:0 }, /* 添加methods,用于实现逻辑控制,里面可以包含多个函数操作*/ methods: { handle:function(){ this.num++; /* !注意:这里的num无法直接被访问,这里的this代表实例对象vm */ } } }); 直接绑定函数名称调用函数 <div> <button type="button" v-on:click="handle">点击1</button> <button type="button" v-on:click="handle()">点击2</button> </div>3.事件函数参数传递:
在涉及到传参问题时,事件函数必须是直接调用函数的方式
普通参数和事件对象: <button type="button" v-on:click="handle1">点击1</button> <button type="button" v-on:click="handle2("点击",12,$event)">点击2</button> methods: { /* 如果事件直接绑定函数名称,默认会传递事件对象作为事件函数的第一个参数*/ handle1:function(event){ console.log(event.target.innerHTML) }, /* 如果事件绑定函数调用,那么事件参数必须作为最后一个参数显示传递,名称固定为$event*/ handle2:function(p){ console.log(p,p1,event) // 通过形参接收事件对象 console.log(p,p1) console.log(event.target.tagName) /* 通过event可以拿到触发对象的标签名,也可以选择拿到其他东西 */ this.num++; /* !注意:这里的num无法直接被访问,这里的this代表实例对象vm */ }4.事件修饰符:
阻止冒泡:调用 event.stopPropagation() <!-- 停止冒泡 --> <button @click.stop="doThis"></button> 阻止默认行为:调用 event.preventDefault() <!-- 阻止默认行为 --> <button @click.prevent="doThis"></button> <!-- 修饰符可以串联 --> <a v-on:click.stop.prevent="doThat"></a>官方更多修饰符:v-on 事件处理
5.按键修饰符:
用于过滤键盘事件,实现对特定按键的响应
.enter <div> 密码: <input type='password' v-on:keyup.enter='submit' v-model="pwd"/> </div> .delete <div> 用户名: <input type='text' v-on:keyup.delete="delete0" v-model="uname"/> </div>6.自定义按键事件修饰符:
全局config.keyCodes对象:
规则:自定义按键修饰符的名字是自定义的,但是对应的值必须是按键对应event.keyCode值
如:
vue.config.keyCodes.aaa=65 /*可以用于给每一个键设置唯一的标识,通过事件对象可以获取该值*/ <input type='password' v-on:keyup.aaa='submit' v-model="pwd"/> //实际在调用时,只有按65对应的键的a的值才能调用,其他键都无效也可以直接记录下对应按键的默认值,从而进行特定调用
<input type='password' v-on:keyup='submit' v-model="pwd"/> // 利用keyup触发事件 methods: { submit:function(event){ console.log(event.keyCode) // 获取每个键对应的数值 } }如:a的值为65,则有
<input type='password' v-on:keyup.65='submit' v-model="pwd"/> //通过特定值,使用对应键调用方法可以不声明,直接使用对应值调用键,但是在代码里不直观,一般来说还是先给a设定65的值,然后调用a
