vue2项目,一个页面两个分别独立的router-view,两个router-view同时存在切互不干扰,怎么定义router
时间: 2024-10-11 11:08:01 浏览: 20
vue实现同一个页面可以有多个router-view的方法
在 Vue2 中,如果你想在一个页面上同时包含两个独立的 `router-view`,并且它们互不影响,你需要对路由器配置做一些特殊处理。你可以考虑创建两个独立的路由组件,每个组件对应一个 `router-view`。
首先,在你的 `main.js` 或者 `router/index.js` 文件里,定义两个路由:
```js
// router/index.js
import Vue from 'vue';
import Router from 'vue-router';
Vue.use(Router);
export default new Router({
// 使用namespaces(命名空间)来区分这两个独立的视图区域
mode: 'history', // 假设你已经在服务器设置了相应的 URL 路由模式
routes: [
{
path: '/view1',
name: 'View1',
component: { // 使用异步加载或懒加载组件的方式
components: {
content: () => import('./views/View1.vue') // 视图1组件
}
}
},
{
path: '/view2',
name: 'View2',
component: {
components: {
content: () => import('./views/View2.vue') // 视图2组件
}
}
}
]
});
```
然后,在你的父组件中引入这两个路由,并将它们放在不同的 `<router-view>` 标签内:
```html
<!-- main.vue 或者 app.vue -->
<template>
<div>
<router-link to="/view1">跳转到 View1</router-link>
<router-view :name="view1RouteName"></router-view> <!-- 使用 name 属性指定 view1 的路由 -->
<router-link to="/view2">跳转到 View2</router-link>
<router-view :name="view2RouteName"></router-view> <!-- 使用 name 属性指定 view2 的路由 -->
</div>
</template>
<script>
export default {
data() {
return {
view1RouteName: 'View1',
view2RouteName: 'View2'
};
},
methods: {
switchView1() {
this.view1RouteName = 'View1';
this.view2RouteName = 'View2'; // 如果需要清除其他视图,可以在这里设置为默认值
},
switchView2() {
this.view1RouteName = 'View2';
this.view2RouteName = 'View1'; // 同理,切换到另一个视图
}
}
};
</script>
```
现在,你可以通过点击链接在两个 `router-view` 之间切换,并且它们是完全独立的,不会相互影响。
阅读全文