美文网首页
理解Vue中的.native修饰符

理解Vue中的.native修饰符

作者: ChasenGao | 来源:发表于2018-05-15 15:05 被阅读109次

个人理解,如果有误请指正。

在书《Vue.js 实战》一书中,作者先讲到了自定义事件这一知识点,然后使用$emit来做了一个举例,实现一个计数器效果。
代码如下:(非原书代码)

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <script src="https://vuejs.org/js/vue.js"></script>
    <!--开发版vue-->
</head>
<body>
    <div id="app">
        <mycomp @total="totalcount"></mycomp>
        <mycomp @total="totalcount"></mycomp>
        <p>你一共点击了{{total}}次</p>
    </div>
    <script type="text/javascript">
        var vm = new Vue({
            el:'#app',
            components:{
                mycomp:{
                    template:'<p @click="addcount">你点击了我{{num}}次</p>',
                    props:{
                        num:{
                            type:Number,
                            default:0
                        }
                    },
                    methods:{
                        addcount(){
                            this.num++;
                            this.$emit('total')
                        }
                    }
                }
            },
            data:{
                total:0
            },
            methods:{
                totalcount(){
                    this.total++;
                }
            }
        })
    </script>
</body>
</html>

定义了一个mycomp组件,每个组件点击时调用addcount方法,让组件中的 num +1,然后通过$emit自定义了total事件,让每次点击组件时,让data中的total+1。



可能没那么难理解,但是书后面又加了一句话:
“除了用v-on在组件上监听自定义事件外,也可以监听DOM事件,这时可以用.native修饰符表示监听的是一个原生事件,监听该组件的跟元素”。

我表示百思不得其解(跟我基础不牢固有关)。
在通过反复尝试后,我发现了用.native来实现上述功能的写法:
代码如下:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <script src="https://vuejs.org/js/vue.js"></script>
</head>
<body>
    <div id="app">
        <mycomp v-on:click.native="click"></mycomp>
        <mycomp v-on:click.native="click"></mycomp>
        你一共点击了{{total}}次
    </div>
    <script type="text/javascript">
        var vm = new Vue({
            el:'#app',
            data:{
                total:0
            },
            methods:{
                click(){
                    this.total++;
                }
            },
            components:{
                mycomp:{
                    template:'<p v-on:click="numclick">你点击了我{{num}}次</p>',
                    props:{
                        num:{
                            type:Number,
                            default:0
                        }
                    },
                    methods:{
                        numclick(){
                            this.num++;
                        }
                    }
                    
                }
            }
        })
    </script>
</body>
</html>

因为在自定义组件中,v-on:click的点击事件调用的是numclick方法,如果我们在html中使用了组件,那么在html中再添加点击事件,就会和组件中的点击事件冲突,并统一解析为一个点击事件。
但是要实现上面的效果,就需要在click后添加.native,告诉它我现在要调用跟元素的事件,添加完.native后,就可以正常调用跟元素中的numclick方法了。

相关文章

  • 理解Vue中的.native修饰符

    个人理解,如果有误请指正。 在书《Vue.js 实战》一书中,作者先讲到了自定义事件这一知识点,然后使用$emit...

  • Vue3去掉native修饰符导致的触发事件相关问题

    在Vue2.x中v-on指令有.native修饰符,当使用.native修饰符时,会在子组件根元素上加上相应事件监...

  • 2021 web面试题常见vue之一 .native修饰符06

    .native .native为vue中的修饰符之一,prevent/stop类似。当点击事件触发不了时可以加上去...

  • 2018-10-11

    vue 修饰符sync【 vue sync修饰符示例】 先看下一个参考的文章:深入理解vue 修饰符sync【 v...

  • vue @click.native 原生点击事件

    给vue组件绑定事件时候,必须加上native ,不然不会生效(监听根元素的原生事件,使用 .native 修饰符)

  • vue中的.native修饰符

    如果你想在某个组件的根元素上绑定事件,直接使用 @click=''function' 是不生效的,我们可以添加.n...

  • Vue组件库Mint UI

    安装: 关于事件绑定在 Vue 2.0 中,为自定义组件绑定原生事件必须使用 .native 修饰符: 从易用性的...

  • Vue事件修饰符详解

    Vue事件修饰符详解(转) 整体学习Vue时看到Vue文档中有事件修饰符的描述,但是看了之后并没有理解是什么意思,...

  • Java native方法

    java中的native方法和修饰符(转) 自己实现一个Native方法的调用

  • vue中的修饰符

    事件修饰符 使用vue,让代码中只有纯粹的数据逻辑,而不是去处理DOM事件细节。 ---事件修饰符vue事件修饰符...

网友评论

      本文标题:理解Vue中的.native修饰符

      本文链接:https://www.haomeiwen.com/subject/uhnedftx.html