Spaces:
Running
Running
| import { createRouter, createWebHistory } from 'vue-router' | |
| import Main from '../pages/Main.vue' | |
| import LeadboardView from '../views/LeadboardView.vue' | |
| import LiveView from '../views/LiveView.vue' | |
| import AddAssetsView from '../views/AddAssetView.vue' | |
| import AssetRequestsView from '../views/AssetRequestsView.vue' | |
| import { dataService } from '../lib/dataService.js' | |
| const routes = [ | |
| { | |
| path: '/', | |
| name: 'main', | |
| component: Main, | |
| redirect: '/leadboard', | |
| children: [ | |
| { path: '/leadboard', name: 'leadboard', component: LeadboardView }, | |
| { path: '/live', name: 'live', component: LiveView }, | |
| { path: '/add-asset', name: 'add-asset', component: AddAssetsView }, | |
| { path: '/asset-requests', name: 'asset-requests', component: AssetRequestsView }, | |
| ] | |
| } | |
| ] | |
| const router = createRouter({ | |
| history: createWebHistory(), | |
| routes | |
| }) | |
| // 全局路由守卫:确保数据在导航前开始加载 | |
| router.beforeEach(async (to, from, next) => { | |
| // 如果数据还未加载且不在加载中,则触发加载 | |
| if (!dataService.loaded && !dataService.loading) { | |
| console.log('[Router] Triggering data load before navigation') | |
| // 不等待加载完成,让加载在后台进行 | |
| dataService.load().catch(e => { | |
| console.error('[Router] Error loading data:', e) | |
| }) | |
| } | |
| next() | |
| }) | |
| export default router | |