Vue.js 重定向后如何使用vuejs全局事件通知
我在名为Vue.js 重定向后如何使用vuejs全局事件通知,vue.js,vuejs2,vue-component,Vue.js,Vuejs2,Vue Component,我在名为app.js的文件中创建了一个名为EvenBus的全局vuejs事件,如下所示: window.EventBus = new Vue(); 从数据库中删除一个人后,我重定向到主页页面,并发出一个名为deleted的事件,如下所示: import {app} from '../app'; export default { methods: { deleteMe: function () { axios.delete('/api/persons/' + this.p
app.js
的文件中创建了一个名为EvenBus
的全局vuejs事件,如下所示:
window.EventBus = new Vue();
从数据库中删除一个人后,我重定向到主页
页面,并发出一个名为deleted
的事件,如下所示:
import {app} from '../app';
export default {
methods: {
deleteMe: function () {
axios.delete('/api/persons/' + this.person.id)
.then(response => {
window.location.href = '/home';
EventBus.$emit('deleted', {
notification_msg: 'This person has been successfully deleted.',
});
})
},
}
在主页上,我插入了一个标记
,链接到名为notify.vue
的组件。
在此组件中,我添加了以下脚本:
import {app} from '../app';
export default {
/* ... */
mounted() {
let that = this;
console.log(EventBus);
EventBus.$on('deleted', function(data){
alert('person deleted!!' + data.notification_msg);
that.msg_text = data.notification_msg;
});
},
}
当删除发生时,我成功地重定向到主页
页面,但那里什么也没有发生。警报('person deleted!!…')
从未出现。
代码执行时没有错误
我是否缺少使我的组件侦听发出的事件的内容
编辑
行
console.log(EvenBus)写入notify.vue
文件的code>显示有一个名为“已删除”的事件(下面是c.f.printscreen)这里的问题是,当执行这行代码时
window.location.href = '/home';
您所在的页面将替换为/home
页面。因此,它甚至可能从未到达发出事件的行,如果它到达,则在加载页面时侦听事件的对象将消失
您可能想研究一下如何使用VueRouter,这样页面就不会被破坏。除此之外,在重定向时可能会告诉服务器在加载页面时需要显示通知。重定向到/home
会导致页面加载是?是,它作为http请求加载。它不是使用ajax或任何东西完成的。仅window.location.href='/home'代码>所以…你发出的事件基本上已经不存在了,因为页面已经不存在了,如果它发出的话。好吧,我明白了。请将您的评论添加为答案,这样我就可以根据您的需要做出回答。我刚刚通过添加打印屏幕编辑了我的原始问题。如果事件按照您的建议消失了,那么在重定向之后,我怎么会看到一个名为deleted
的事件?行console.log(EventBus)
写在组件notify
@Warrio中。控制台显示了您在$on
上注册的处理程序。不幸的是,这是真的:D。谢谢!