首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vue:在事件上推送到数组

Vue:在事件上推送到数组
EN

Stack Overflow用户
提问于 2018-04-11 19:50:41
回答 2查看 8K关注 0票数 0

我有两个单独的Vue组件,它们需要通过eventbus相互通信。像这样:

form-component.Vue

代码语言:javascript
运行
复制
import events from './events'
export default {
   ...
   methods() {
     sumbitForm() {
       events.$emit('form-submitted', data)
     }
   }
   ...
}

other-component.Vue

代码语言:javascript
运行
复制
import events from './events'
export default {
  ....
  mounted() {
    events.$on('form-submitted, data => {
      this.list.push(data);
    }
  },
  data() {
    return {
      list: []
    }
  }
  ....
}

但是当事件被监听时,'this‘不是指'other-component’,而是指实际的eventbus 'events‘。

我该如何解决这个问题呢?

EN

Stack Overflow用户

发布于 2018-04-11 20:25:56

在我看来,你好像误解了这个问题。箭头函数绑定它的上下文,并且该箭头函数的上下文被正确地绑定到另一个组件,因为它在一个方法中,并且方法被自动绑定到它们的组件。下面的示例按照预期工作。

代码语言:javascript
运行
复制
const events = new Vue();

Vue.component('formComponent', {
  template: '<button @click="submitForm">Submit</button>',
  methods: {
    submitForm() {
      events.$emit('form-submitted', {
        foo: 1
      });
    }
  }
});

Vue.component('otherComponent', {
  template: '<div><div v-for="item in list">{{item}}</div></div>',
  data() {
    return {
      list: []
    }
  },
  mounted() {
    events.$on('form-submitted', data => {
      this.list.push(data);
    });
  }
});

new Vue({
  el: '#app'
});
代码语言:javascript
运行
复制
<script src="//unpkg.com/vue@latest/dist/vue.js"></script>
<div id="app">
  <form-component></form-component>
  <other-component></other-component>
</div>

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49774392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档