博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
$listeners与.native的使用
阅读量:3961 次
发布时间:2019-05-24

本文共 1557 字,大约阅读时间需要 5 分钟。

$listeners与.native的使用

官网解释:

包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。它可以通过 v-on="$listeners" 传入内部组件——在创建更高层次的组件时非常有用。
个人理解:
创建parent组件的子组件child,child的子组件child_child
代码如下:

此时控制台打印结果:

在这里插入图片描述
在parent组件添加事件,代码如下:

上面代码中的parenttest1()方法已经给出!!

执行结果为:

在这里插入图片描述
在parent组件再次添加事件,代码如下:

执行结果为:

在这里插入图片描述
然后向parant组件内的模板添加如下:

child

结果为:

在这里插入图片描述
然后向child组件内的模板添加如下:

child_child

结果为:

在这里插入图片描述
注意:
如果跳过“向parant组件内的模板添加”,直接“向child组件内的模板添”,child_child的listeners的值是{},空!!所以必须是父传子,子传孙,不能父传孙!

另外一种写法

除了将v-on="$listeners"添加属性标签内,还有一种写法:
在父组件内创建计算属性,代码上面都有:

computed:{
childtest:function(){
var vm = this return Object.assign({
}, this.$listeners) } }

然后将v-on="$listeners"替换为v-on="childtest"

child

结果是一样的!!

接下来向child_child组件添加点击事件:

添加@click="$emit('test1')"

var child_child = {
template:`
-------------------
child_child
`, mounted(){
console.log("child_child的$listeners值",this.$listeners); } }

然后点击child_child

在这里插入图片描述
结果显示:
在这里插入图片描述

当将代码修改为:

child_child

结果为:

在这里插入图片描述
会直接执行test1()的方法!

将parent标签修改为:

在这里插入图片描述

在修改为:

对比控制台打印的结果!

在这里插入图片描述
分析可得:
可见mouseover.native激活了!!同时$listeners的值也只剩下test1!!
也就是官方为啥说:包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。
$listeners官网解释:
包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。它可以通过 v-on="$listeners" 传入内部组件——在创建更高层次的组件时非常有用。
.native的官方解释为:
想要在一个组件的根元素上直接监听一个原生事件。这时,你可以使用 v-on.native 修饰符

结束!

后续补充!

转载地址:http://qrezi.baihongyu.com/

你可能感兴趣的文章
HTTP状态码
查看>>
go语言
查看>>
mysql mariaDB 以及存储引擎
查看>>
游戏行业了解介绍
查看>>
linux at 命令使用
查看>>
Go在windows下执行命令行指令
查看>>
inotify
查看>>
inode
查看>>
Shell: sh,bash,csh,tcsh等shell的区别
查看>>
golang ubuntu 配置 笔记
查看>>
vim 常用命令
查看>>
golang 开源项目
查看>>
ubntu 开发服务进程
查看>>
linux 常用命令以及技巧
查看>>
记录1年免费亚马逊AWS云服务器申请方法过程及使用技巧
查看>>
golang文章
查看>>
Source Insight 经典教程
查看>>
快速打开菜单附件中的工具
查看>>
Windows系统进程间通信
查看>>
linux exec的用法
查看>>