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函数

Vue中的native修饰符解析的更多相关文章

  1. vue中的.native修饰符

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

  2. vue中的.passive修饰符

    一.passive作用 详情请参考MDN(https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener)中 ...

  3. vue.js实战——.native修饰符

    https://blog.csdn.net/qq_29468573/article/details/80771625 除了用v-on在组件上监听自定义事件外,也可以监听DOM事件,这时可以用.nati ...

  4. vue中的事件修饰符

    vue提倡的是在方法中只有对数据的处理,所以提供了事件修饰符用于DOM的事件处理,常用的事件修饰符有以下几个: (1). stop:阻止冒泡(通俗讲就是阻止事件向上级DOM元素传递) 点击内层div的 ...

  5. 怎样在 Vue 中使用 事件修饰符 ?

    Vue 中可以通过 v-on 来绑定事件监听函数, 不过事件会有许多额外情况, 比如 是否阻止冒泡 / 是否阻止重载 / 是否限制点击次数 / 是否可以通过按键触发 等等. 这时就需要使用到 事件修饰 ...

  6. vue中的.sync修饰符用法

    在项目中接触到父组件传值给子组件的时候,想在子组件改变父组件传的值.(比如用于弹窗关闭) 但是正常来说,vue2是不允许子组件直接改父组件传进去的值的. 所以我们需要在子组件内定义自定义事件,通知父组 ...

  7. 030——VUE中鼠标语义修饰符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 029——VUE中键盘语义修饰符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. (二)咋使用VUE中的事件修饰符

    1,stop修饰符:阻止事件冒泡 首先我们要明确H5的事件是从内向外进行冒泡的,写一个简单的DEMO 当我们点击按钮时,事件从内向外冒泡,依次触发绑定的事件,控制台信息如下 现在我们在click后面添 ...

随机推荐

  1. Stopwatch 类用于计算程序运行时间

    Stopwatch 类 命名空间:System.Diagnostics.Stopwatch 实例化:Stopwatch getTime=new Stopwatch(); 开始计时:getTime.St ...

  2. person类与其子类在使用中的内存情况(含java的改写和c#的屏蔽)

    JAVA 普通person类及调用代码: public class Person { public String xm; public int nl; public void setme(String ...

  3. VS2017 注册

    Visual Studio 2017 序列号 Key 激活码 VS2017 注册码 Visual Studio 2017(VS2017) 企业版 Enterprise 注册码 序列号:NJVYC-BM ...

  4. chrome安装插件

    看了很多的解决办法,也试了很多种,有的有点用,有的只能用一次,最后成功了,在这里总结一下 一.首先下载 很多人下载的都ctx格式的,然后拖进去安装,用了一次就崩溃了,主要还是安装方式不对,一般需要将下 ...

  5. ASP.NET SignalR 系列(九)之源码与总结

    1.SignalR 1.0与2.0有些不同,以上篇章均只支持2.0+ 2.必须注意客户端调用服务端对象和方法时的大小写问题 3.客户端上的方法不能重名 4.IE7及以下的,需要增加json的分析器,分 ...

  6. Linux(Ubuntu)通过nfs挂载远程硬盘

    需求 现有两台Linux Server,需要把Linux01 下的8T硬盘挂在到 Linux02 下:Linux01 硬盘: Linux02 硬盘: 挂载原理 通过 nfs-server 将Linux ...

  7. Jmeter jmeter-server.bat 无法启动

    问题现象: 解决方法: 找到如下文件: 在目录\apache-jmeter-5.0\bin下,打开名为jmeter.properties的文件 找到server.rmi.ssl.disable=fal ...

  8. 一招解决------VMware虚拟机 Centos7网络配置 ping:www.baidu.com:未知的名称或服务 ping不通

    一招解决------VMware虚拟机 Centos7网络配置 ping:www.baidu.com:未知的名称或服务 ping不通 1.首先点击VMware的编辑,再点击虚拟网路编辑器. 2.进入虚 ...

  9. Django之DRF源码分析(二)---数据校验部分

    Django之DRF源码分析(二)---数据校验部分 is_valid() 源码 def is_valid(self, raise_exception=False): assert not hasat ...

  10. xshell链接ubuntu16

    用xshell 链接 ubuntu16 失败 ,是因为没有装 ssh 服务 sudo apt-get install openssh-server         //安装ssh服务 ps -ef | ...