.stop .prevent .sync 修饰符

1,167 阅读1分钟

事件修饰符

vue 官方解释 :在事件处理程序中调用 event.preventDefault()event.stopPropagation() 是非常常见的需求。尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。

为了解决这个问题,Vue.js 为 v-on 提供了事件修饰符。之前提过,修饰符是由点开头的指令后缀来表示的。

  • .stop 可以阻止冒泡事件

  • .prevent 可以阻止默认事件

.sync 修饰符

<div id="app">
    <div>{{bar}}</div>
    <my-comp :foo.sync="bar"></my-comp>
    <!-- <my-comp :foo="bar" @update:foo="val => bar = val"></my-comp> -->
</div>
<script>
    Vue.component('my-comp', {
        template: '<div @click="increment">点我+1</div>',
        data: function() {
            return {copyFoo: this.foo}
        },
        props: ['foo'],
        methods: {
            increment: function() {
                this.$emit('update:foo', ++this.copyFoo);
            }
        }
    });
    new Vue({
        el: '#app',
        data: {bar: 0}
    });
</script>

小结: 代码 <my-comp :foo.sync="bar"></my-comp>会被扩展成 <comp :foo="bar" @update:foo="val => bar = val"></comp>,这两个语法相同,.sync 修饰符 只是一个双向绑定事件,订阅发布模式下的语法糖而已。

本文 sync 修饰符主要内容来自 如何理解Vue的.sync修饰符

最后,谢谢大家的阅读,如有问题,请提出斧正。