【Vue笔记】Vue入门简介_事件(04)
Page content
1.事件处理
- 使用v-on:xxxx 简写 @xxx 绑定事件
- 时间回调写在Vue实例的 methods 对象中, 不要写在data中
- methods中配置的函数,不要用箭头函数,这样this就不指向Vue实例了
- 函数的参数中 event 可以用 $event 指定。
实例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="../js/vue.js" type="text/javascript" charset="uft-8"></script>
</head>
<body>
<div id="app">
<h3>你好,{{name}}</h3>
<button v-on:click="showIfo11">点我11(不传参)</button>
<!-- 简写可以用 @click -->
<button @click="showIfo22($event,66)">点我22(传参)</button>
</div>
<script type="text/javascript">
Vue.config.productionTip = false;
new Vue({
el: '#app',
data: {
name: '小明' //这里的是数据劫持和数据代理
//函数不要写在这里,可以用但是不推荐(函数没必要做数据代理)
},
methods: {
showIfo11(event) {//不能用箭头函数
//console.log(event.target.innerText);
//console.log(this) // 此处的this是 Vue实例
alert('你好11,' + this.name);
},
showIfo22(event,number) {
console.log(event, number)
alert('你好22,' + this.name);
}
}
});
</script>
</body>
</html>
2.键盘修饰符
prevent: 阻止默认事件
stop: 阻止时间冒泡
once: 事件只触发一次
capture: 使用事件的捕获模式
self: 只有event.target是当前操作的元素时才触发事件
passive: 事件的默认行为立即执行,无需等待事件回调执行完毕
实例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="../js/vue.js" type="text/javascript" charset="uft-8"></script>
<style>
* {
margin-top: 10px;
}
.demo1 {
height: 50px;
background-color: skyblue;
}
.box1 {
padding: 5px;
background-color: skyblue;
}
.box2 {
padding: 5px;
background-color: orange;
}
.list{
width: 200px;
height: 200px;
background-color: plum;
overflow: auto;
}
li{
height: 100px;
}
</style>
</head>
<body>
<div id="app">
<h3>你好,{{name}}</h3>
<!-- 阻止默认事件 -->
<a href="https://www.baidu.com" @click.prevent="showInfo">点我提示信息</a>
<!-- <a href="https://www.baidu.com" @click.stop.prevent="showInfo">点我提示信息</a> -->
<!-- 阻止冒泡 -->
<div class="demo1" @click="showInfo">
<button @click.stop="showInfo">点我提示信息</button>
</div>
<!-- 事件只触发一次 -->
<button @click.once="showInfo">点我提示信息</button>
<!-- 使用事件的捕获模式 -->
<div class="box1" @click.capture="showMessage(1)">
div1
<div class="box2" @click="showMessage(2)">
div2
</div>
</div>
<!-- 只有event.target是当前操作的元素时才触发事件 -->
<div class="demo1" @click.self="showInfo">
<button @click="showInfo">点我提示信息</button>
</div>
<!-- 事件的默认行为立即执行,无需等待事件回调执行完毕 -->
<!-- scroll 滚动条 wheel 鼠标滚轮 -->
<ul @wheel.passive="demo" class="list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</div>
<script type="text/javascript">
Vue.config.productionTip = false;
new Vue({
el: '#app',
data: {
name: '小明'
},
methods: {
showInfo(e) {
// e.preventDefault();
// e.stopPropagation();
alert('你好11,' + this.name);
},
showMessage(e) {
// e.preventDefault();
// e.stopPropagation();
alert('你好11,' + this.name);
},
demo(){
for (let i = 0; i < 100000; i++) {
console.log("#");
}
console.log("终于结束了")
}
}
});
</script>
</body>
</html>
3.键盘事件
1.常用按键事件别名
回车 => enter
删除 => delete
退出 => esc
空格 => space
换行 => tab 像tab键只能用 keydwon 因为up时直接切换到下一个元素
上 => up
下 => down
左 => left
右 => right
2.Vue未提供的别名,只能用按键原始的key值绑定
比如 Enter, 驼峰式需要用 - 分割 caps-lock
3.特殊键:=> ctrl alt shift meta
是系统修饰键比较特殊:
1)keyup:按下修饰键同时,再按下其他键,随后释放其他键,事件才被触发
2) keydown:正常触发事件
4.可以定义一个别名,Vue.config.keyCodes.xxx = 键码 但是也不是那么推荐
可以定义一个别名,Vue.config.keyCodes.xxx = 键码 但是也不是那么推荐。
实例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="../js/vue.js" type="text/javascript" charset="uft-8"></script>
</head>
<body>
<div id="app">
<h3>你好,{{name}}</h3>
<input type="text" placeholder="按键回车提示" @keyup.enter="showInfo">
<!-- <input type="text" placeholder="安县回车提示" @keyup.Enter="showInfo"> -->
<!-- <input type="text" placeholder="安县回车提示" @keyup.ctrl.y="showInfo"> -->
<!-- <input type="text" placeholder="安县回车提示" @keyup.13="showInfo"> 不推荐,以后会消除 -->
<!-- <input type="text" placeholder="安县回车提示" @keyup.caps-lock="showInfo"> -->
</div>
<script type="text/javascript">
Vue.config.productionTip = false;
Vue.config.keyCodes.huiche = 13;
new Vue({
el: '#app',
data: {
name: '小明'
},
methods: {
showInfo(e) {
// if(e.keyCode != 13) {
// return
// }
console.log(e.key, e.keyCode);
console.log(e.target.value);
}
}
});
</script>
</body>
</html>
欢迎大家的意见和交流
email: li_mingxie@163.com