我有一个导入其他两个组件的主要组件:
- 管理页面
- 登录页面
在我的主要组件中:
<template>
<div id="app">
<component v-bind:is="currentView"></component>
</div>
</template>
<script>
import AdminPage from './components/adminPage/AdminPage'
import LoginPage from './components/LoginPage'
export default {
name: 'app',
components: {
AdminPage, LoginPage
},
data: function() {
return {
currentView: 'LoginPage'
}
},
created() {
this.$bus.$on('eventFromLoginPage', event => {
this.currentView = "AdminPage";
});
}
}
</script>
在登录页面中,我有一个向主应用程序发出触发器的方法:
changeView: function() {
this.$bus.$emit('eventFromLoginPage');
}
主要组件由 main.js 文件调用:
import Vue from 'vue'
import App from './App'
Object.defineProperty(Vue.prototype, '$bus', {
get() {
return this.$root.bus;
}
});
var bus = new Vue({})
new Vue({
el: '#app',
template: '<App/>',
components: { App },
data: {
bus: bus
}
})
问题是,虽然当我在登录页面调用changeView函数时,发送了触发器并且主组件中的视图根据需要更改为adminPage,但是主页面被重新渲染并且视图返回到登录页面.
问题:为什么在更改“currentView”状态后主组件会重新渲染,如何将管理页面保留为视图。