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

Vue之@click事件修饰符@click.stop与@click.prevent按键修饰符@keyup.enter

VUE的事件修饰符

vue事件修饰符

vue 事件修饰符

Vue指令之v-on的缩写和事件修饰符