Vue .sync修饰符@click.stop与@click.prevent
Posted 长不大的大灰狼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue .sync修饰符@click.stop与@click.prevent相关的知识,希望对你有一定的参考价值。
Vue .sync修饰符
一、.sync修饰符
<comp :foo.sync="bar"></comp>
等价于
<comp :foo="bar" @update:foo="val => bar = val"></comp>
当子组件需要更新 foo 的值时,需要显式地触发一个更新事件:
this.$emit('update:foo', newValue)
示例:
<template>
<div class="details">
<myComponent :show.sync='valueChild' style="padding: 30px 20px 30px 5px;border:1px solid #ddd;margin-bottom: 10px;"></myComponent>
<button @click="changeValue">toggle</button>
</div>
</template>
<script>
import Vue from 'vue'
Vue.component('myComponent',
template: `<div v-if="show">
<p>默认初始值是show,所以是显示的</p>
<button @click.stop="closeDiv">关闭</button>
</div>`,
props:['show'],
methods:
closeDiv()
this.$emit('update:show', false); //触发 input 事件,并传入新值
)
export default
data()
return
valueChild:true,
,
methods:
changeValue()
this.valueChild = !this.valueChild
</script>
vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定的变量。
二、@click.stop与@click.prevent
@click.stop
:阻止事件冒泡
vue中点击事件直接在元素中使用@click="click"即可,但是有时在一个元素中包含了子元素,而且父元素和子元素都有点击事件,此时我们希望的点击效果就是:点击子元素区域的的时候,不触发父级元素的点击事件
@click.prevent
:阻止事件的默认行为,
<a href="http://www.baidu.com" @click.prevent="test4">百度一下</a> //阻止a标签跳转,仅执行函数test4
<form action="/xxx" @submit.prevent="test5"> //阻止表单提交,仅执行函数test5
<input type="submit" value="注册">
</form>
参考文章:
[1] 深入理解vue 修饰符sync【 vue sync修饰符示例】
以上是关于Vue .sync修饰符@click.stop与@click.prevent的主要内容,如果未能解决你的问题,请参考以下文章
Vue之@click事件修饰符@click.stop与@click.prevent按键修饰符@keyup.enter