05事件监听
事件监听
可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。
获取到浏览器参数的event对象: $event
<div id="app">
<h2>{{counter}}</h2>
<button v-on:click="increment">+</button>
<button v-on:click="decrement">-</button>
<!-- 语法糖 当没参数时()可以不用写 -->
<button @click="increment">+</button>
<button @click="decrement">-</button>
<!-- 事件调用时没有参数 -->
<button @click="bnt1Click()">按钮1</button>
<button @click="bnt1Click">按钮1</button>
<!-- 在事件定义前,写函数省略了小括号,但是方法本身需要一个参数,这个时候
Vue会将浏览器默认生成的event事件对象作为参数传入方法中 -->
<button @click="bnt2Click(123)">按钮2</button>
<button @click="bnt2Click()">按钮2</button>
<button @click="bnt2Click">按钮2</button>
<!-- 定义方法时,我们需要event对象,同时又需要其他参数 -->
<!-- 在调用方式时,如何手动的获取到浏览器参数的event对象: $event -->
<button @click="bnt3Click('abc',$event)">按钮3</button>
</div>
<body>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
data: {
counter: 0
},
methods:{
increment(){
this.counter++
},
decrement(){
this.counter--
},
bnt1Click(){
console.log("bnt1Click");
},
bnt2Click(abc){
console.log("--------------",abc);
},
bnt3Click(abc,event){
console.log("++++++++++++++", abc,event);
}
}
})
// 如果我们函数需要参数,但是没有传入参数,那么函数的形参为undefined
function abc(name){
console.log(name);
}
abc()
</script>
</body>
v-on的修饰符
1 .stop修饰符的使用
当多对标签进行重叠的时候, 你点击最上面的一层标签的时候, 会自动的冒泡到他下面的所有标签上面,而.stop就是阻止冒泡使用的
2.prevent修饰符的使用
在form表单提交时候或者在点击a标签的时候, 会阻止提交或跳转
3.keyup监听某个键盘的键帽
监听某个键盘的键位
4.once修饰符的使用
绑定后只会触发一次
<div id="app">
<!-- 1. .stop -->
<div @click='divClick'>
aaaaa
<button @click.stop='bntClick'>按钮</button>
</div>
<!-- 2. .prevent -->
<form action="baidu">
<input type="submit" value="提交" @click.prevent='submitClick'>
</form>
<!-- 3. 监听某个键盘的键位 -->
<input type="text" @keyup.enter="keyUp">
<!-- 4. once修饰符的使用 -->
<button @click.once='bnt2Click'>按钮</button>
</div>
<body>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
data: {
massage: "你好"
},
methods: {
bntClick() {
console.log('bnt')
},
divClick() {
console.log('div')
},
submitClick() {
console.log("submitClick")
},
keyUp() {
console.log("up")
},
bnt2Click() {
console.log('bnt2');
}
}
})
</script>
</body>

浙公网安备 33010602011771号