【问题标题】:vuejs component event with : not workingvuejs组件事件:不起作用
【发布时间】:2018-09-05 21:09:49
【问题描述】:

我有一个 vuejs 组件,在我的组件的一个方法中,我正在调度这样的事件:

this.$emit('user:registerd', [user])

在父级上,我尝试使用

捕获它
<user v-on:user:registered="showSuccess"> </user>

但是上面永远不会运行showSuccess 方法。如果我从发射和 v-on 中省略 : 部分,一切正常。我认为可以使用: 以某种方式在组件中使用它。

有谁知道为什么这不起作用?

【问题讨论】:

  • 这里有错字:$emit('user:register[e is missing]d',...

标签: javascript vue.js vuejs2 vue-component vue-events


【解决方案1】:

如果你发出:

this.$emit('user:registerd', [user])

听:

<user v-on:user:registerd="showSuccess"> </user>


OTOH,如果你想听:

<user v-on:user:registered="showSuccess"> </user>

你应该像这样发出:

this.$emit('user:registered', [user])

请记住,您正在向处理函数发送一个单元素数组。


小演示:

Vue.component('child', {
  template: `<button @click="$emit('user:registered', [123])">CLICK ME TO EMIT EVENT</button>`
})
new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: {
  	showSuccess(e) {
      this.message = 'Success. Received: ' + JSON.stringify(e);
    }
  }
})
<script src="https://unpkg.com/vue"></script>

<div id="app">
  <p>{{ message }}</p>
  <child @user:registered="showSuccess"></child>
</div>

【讨论】:

  • 我试图找出代码之间的区别。你能解释一下区别吗?对我来说,它和 OP 一样。
  • 他正在发出一个带有名称的事件并监听不同的名称。我以为: 与它有关,但是,正如我在小演示中测试的那样,它实际上并没有。
  • 啊,我很笨……还是看不到差异。
  • 检查$emit(eventName)中的实际名称和OP监听的v-on:eventName
  • 是的,我不敢相信我有错字
猜你喜欢
  • 2018-11-11
  • 2018-06-15
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
相关资源
最近更新 更多