zoukankan      html  css  js  c++  java
  • Vue中的native修饰符解析

    native修饰符

    一般来说,vue本身提供了v-on:eventName这个语法来提供vue的时事件绑定,通常使用@eventName这个语法糖代替上述语法。

    使用过程中没有考虑@eventName作用标签的类型,因为一般将该语法用在html原生标签,在组件标签上使用的时候,出现了@click="handler"无法触发handler事件。

    以下为事故现场:

    <my-component @click="handler"><my-component/>
    

    使用该组件的vue实例
    注:handler( )为ES6语法,等同于handler:function( )

        methods:{
            handler(){
                console.log('click me');
            }
        }
    

    经过面向搜索编程(百度)
    发现默认@eventName使用在组件上是表示绑定了组件自定义eventName
    要绑定原生DOM事件,需要使用.native来修饰@eventName,即 @eventName.native 语法

    那么自定义事件又是怎么一肥事呢?

    一般来说,自定义事件用于Vue自定义组件,用于内部DOM元素事件响应时,开放给组件外部的API。

    specially,他需要组件内部使用$emit('defineEventName',value)这个方法来触发,这也表明了一开始我的错误想法,以为是触发组件内部的原生DOM的click方法,这里指明了使用@evnetName作用在组件上,不会触发原生DOM事件,即一开始的无反应。

    这里完成了一个@click="handler",而不是用native修饰符的例子,基于Vue自定义事件

    my-component组件内部实现

        <template>
            <button @click="in">click me</button>
        </template>
    
        methods:{
            in(){
                this.$emit('click')
            }
        }
    

    这个例子在点击按钮click me之后能够通过$emit('click')触发组件自定义的click事件以调用使用该组件上的Vue实例上的handler方法,打印出click me。

    在组件上想要触发@click事件,组件内部需要有一个可以触发原生click事件的元素,并且这个原生click事件绑定一个用于提交emit('click')到组件上的@click函数

    从前端到后端,到网络原理,再到计算机组成,最后回归到汇编,小小程序员的成长之路
  • 相关阅读:
    Codeforces Round #733
    [ZJOI2007] 时态同步(树形dp)
    最大子树和(树形dp)
    P2015 二叉苹果树
    没有上司的舞会(经典树形dp)
    P3884 [JLOI2009]二叉树问题(LCA)
    Bin Packing Problem(线段树 + multiset)
    P4281 [AHOI2008]紧急集合 / 聚会(最近公共祖先)
    P3128 [USACO15DEC]Max Flow P(LCA 树上差分)
    java中Set接口用法
  • 原文地址:https://www.cnblogs.com/sefaultment/p/9360646.html
Copyright © 2011-2022 走看看