stop修饰符
相当于调用 event.stopPropagation(),阻止事件冒泡
<body>
<div id="app" @click="divclick">
<button @click="buttonclick">button</button>
</div>
<script>
const vue = new Vue({
el:"#app",
methods:{
buttonclick(){
console.log("我是button,我被点击了!");
},
divclick(){
console.log("我是div,我被点击了!");
}
}
});
</script>
</body>
正常情况下,如果不用stop修饰符,点击按钮后通过事件冒泡机制,div的点击事件也会触发,结果如下:
给按钮添加stop修饰符以后
<body>
<div id="app" @click="divclick">
<button @click.stop="buttonclick">button</button>
</div>
<script>
const vue = new Vue({
el:"#app",
methods:{
buttonclick(){
console.log("我是button,我被点击了!");
},
divclick(){
console.log("我是div,我被点击了!");
}
}
});
</script>
</body>
这语法真是又香又甜~~~效果如下:
prevent修饰符
相当于调用 event.preventDefault(),阻止默认行为
以a标签为例,默认情况下点击a标签会打开href中的链接,通过prevent修饰符可以阻止默认行为
<body>
<div id="app">
<a href="http://www.baidu.com" @click.prevent="aclick">百度一下</a>
</div>
<script>
const vue = new Vue({
el:"#app",
methods:{
aclick(){
console.log("a被点击了!");
}
}
});
</script>
</body>
结果如下:没有打开默认的链接,而是调用了click事件
键修饰符
只当事件是从特定键触发时才触发回调,以回车键为例
<body>
<div id="app">
<input @keyup.enter="enter"/>
</div>
<script>
const vue = new Vue({
el:"#app",
methods:{
enter(){
console.log("enter键!!!");
}
}
});
</script>
</body>
效果如下: