前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue中$emit的使用

vue中$emit的使用

原创
作者头像
开发者潇潇
修改2020-04-16 19:07:43
1.1K0
修改2020-04-16 19:07:43
举报
文章被收录于专栏:用户3657533的专栏

vue中组件是重要的一部分,因为有各自的作用域,所以父子组件之间的值传递也很重要;

在初期接触父子组件的值传递时,个人接触到最多的是prop,主要是父组件给子组件静态传值;

但是在处理提问增加标签问题时,子组件也需要给父组件传值;

$emit实现子组件向父组件通信,绑定一个自定义事件event,语句被执行到的时候,就会将参数arg传递到父组件,父组件通过@event监听并接收参数。

在这里将标签输入框封装为一个组件,在输入框中删除或者点击时,需要将对应的值传给父组件;

输入框中删除标签还好,此处直接绑定'input'事件,将对应值返回父组件;

代码语言:javascript
复制
delTag(tag, index) {
  this.tags.splice(index, 1);
  tag.isSelected = false;
  this.$emit('input', this.tags);
},

但是,此处还需要聚焦时展示标签下拉框,标签下拉框的展示通过 showTagList 控制,那么子组件输入框focus状态下,就需要改变showTagList的值为true。此处子组件可以通过$emit触发父组件的自定义事件。

在父组件定义事件,并绑定

代码语言:javascript
复制
updateShowTag(data) {
  this.showTagList = data;
},
image.png
image.png

子组件上触发事件

代码语言:javascript
复制
tagShow() {
  this.$emit('showTags', true);
},
image.png
image.png

这样就可以保证子组件的操作动态传递给父组件了~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档