【发布时间】:2018-05-15 03:11:23
【问题描述】:
我刚刚在 main.js 文件中创建了一个事件总线,如下所示:
main.js
Vue.prototype.$bus = new Vue()
在那之后,我只是写了一些代码来测试这样的事件总线:
测试组件
<template>
<div>
<div class="account-modal_form">
<form action="" @submit.prevent="formSubmit">
<div class="account-modal_form__group" :class="{ warning: errors.has('password') }">
<div class="account-modal_form__input">
<input name="password" :type="passwordType" placeholder="" class="width-316" v-validate="'required'" v-model="password">
<i class="account-modal_form__viewpass" @click="togglePassword"></i>
</div>
<span class="account-modal_form__warning" v-show="errors.has('password')">
{{ errors.first('password') }}
</span>
</div>
{{ errors }}
<div class="account-modal_form__group">
<button type="submit" class="btn btn--primary btn--large">next</button>
<button type="button" class="btn btn--default" @click="cancelAction">cancel</button>
</div>
</form>
</div>
</div>
</template>
<script>
import { API } from '@/api'
export default {
data() {
return {
passwordType: 'password',
password: ''
}
},
methods: {
created() {
this.$bus.$on('test', () => console.log('test'));
},
nextStep() {
this.$bus.$emit('test');
},
formSubmit() {
this.nextStep();
}
}
}
</script>
当我点击提交按钮时,我想先提交表单并调用 nextstep 来发出事件,但 $on 事件什么也没输出。
【问题讨论】:
-
出现任何错误?
Vue.prototype.$bus = ...是在创建 Vue 实例之前完成的吗? -
@JacobGoh 不,似乎 sendOriginPassword 事件没有被监听并且什么也没输出。我尝试在发射后输出 this.$bus._event,但它输出为空。