vue子路由跳轉(zhuǎn)實(shí)現(xiàn)tab選項(xiàng)卡
現(xiàn)在很多的后臺(tái)管理系統(tǒng)都采用tab選項(xiàng)卡的布局,左邊是導(dǎo)航欄固定,右邊是對(duì)應(yīng)的頁(yè)面,每次點(diǎn)擊左邊的導(dǎo)航標(biāo)題,只有右面的對(duì)應(yīng)頁(yè)面再切換,而vue要做tab選項(xiàng)卡,推薦使用<router-link></router-link>實(shí)現(xiàn)a標(biāo)簽的效果,然后使用<router-view></router-view>實(shí)現(xiàn)插槽的效果,把對(duì)應(yīng)的頁(yè)面 "塞" 進(jìn)去,具體實(shí)現(xiàn)看下面的案例:
1、這是tab選項(xiàng)卡的頁(yè)面,布局就不說(shuō)了,主要是<router-link :to="a.url" :key="index" v-for="(a,index) in Data">{{a.title}}</router-link>,其中to指向你要跳轉(zhuǎn)的路徑,這是關(guān)鍵,而<router-view></router-view>就是最終其他子頁(yè)面要顯示的地方
<template> <div class="index-box"> <nav> <h1>導(dǎo)航</h1> <!-- 所有的導(dǎo)航標(biāo)題,進(jìn)行路由跳轉(zhuǎn)指向 --> <router-link :to="a.url" :key="index" v-for="(a,index) in Data">{{a.title}}</router-link> </nav> <div class="content"> <!-- 路由插槽:路由跳轉(zhuǎn)的位置 --> <router-view></router-view> </div> </div> </template> <script> import navData from "../../static/data/nav" export default { name: "Index", data(){ return { Data:[] } }, methods:{ init(){ this.Data = navData.navData; } }, created(){ this.init(); } } </script> <style scoped> /* 容器 */ .index-box{ width: 100%; height: 100%; background: #212224; display: flex; } /* 左側(cè)導(dǎo)航條 */ nav{ width: 260px; height: 100%; background: #323437; overflow: hidden; float: left; } /* 導(dǎo)航 */ nav h1{ color: #f2ffff; margin: 10px 0 10px 10px; } /* 導(dǎo)航標(biāo)題 */ nav a{ display: block; width: 100%; height: 45px; color: #f2ffff; background: #2e3033; padding-left: 10px; line-height: 45px; font-size: 20px; margin-bottom: 10px; } /* 右側(cè)內(nèi)容 */ .content{ flex: 1; padding: 20px; } </style>
2、路由配置
這個(gè)案例中,默認(rèn)顯示的就是我tab選項(xiàng)卡的頁(yè)面,所以其他子頁(yè)面我就以這個(gè)頁(yè)面配置的子路由
如果有其他需求,就再需要的地方配置子路由即可
import Vue from 'vue' import Router from 'vue-router' // 首頁(yè) import Tab from "../pages/Tab" // 頁(yè)面一 import PageOne from "../pages/PageOne" // 頁(yè)面二 import PageTwo from "../pages/PageTwo" // 頁(yè)面三 import PageThree from "../pages/PageThree" Vue.use(Router); export default new Router({ routes: [ { // 默認(rèn)顯示的頁(yè)面 path: '/', name: 'Tab', component: Tab, children:[ { // 子路由中默認(rèn)顯示的頁(yè)面 path: '', name: 'PageOne', component: PageOne }, { path: 'PageTwo', name: 'PageTwo', component: PageTwo }, { path: 'PageThree', name: 'PageThree', component: PageThree } ] } ] })
這里再提供一種情況:比如我默認(rèn)顯示的是登錄頁(yè)面,登錄進(jìn)入后是首頁(yè),是tab選項(xiàng)卡的布局,所以我只要給首頁(yè)配置子路由就可以了
import Vue from 'vue' import Router from 'vue-router' // import HelloWorld from '@/components/HelloWorld' // 首頁(yè)框架 import Index from "../pages/Index"; // 首頁(yè) import FunctionsIndex from "../components/Functions/FunctionsIndex"; // 數(shù)據(jù)源列表 import FunctionsDbSource from "../components/Functions/FunctionsDbSource" // 角色管理 import FunctionsRoleManagement from "../components/Functions/FunctionsRoleManagement" // 登錄 import Login from "../pages/Login" Vue.use(Router); export default new Router({ linkExactActiveClass: "act", mode: "history", routes: [ { // 首頁(yè) path: '/Index', name: 'Index', component: Index, children: [ { // 首頁(yè)中默認(rèn)顯示統(tǒng)計(jì)頁(yè)面 path: '', name: 'Total', component: FunctionsIndex }, { path: 'DbSource', name: 'DbSource', component: FunctionsDbSource }, { path: 'RoleManagement', name: 'RoleManagement', component: FunctionsRoleManagement } ] }, // 默認(rèn)顯示登錄頁(yè)面 { path: '/', name: 'Login', component: Login } ] })
3、配置json文件
因?yàn)槊總€(gè)系統(tǒng),側(cè)邊欄的導(dǎo)航標(biāo)題都不一樣,而且也不能保證后期不會(huì)再加,所以我推薦把導(dǎo)航標(biāo)題提出來(lái),到時(shí)候只要v-for循環(huán)<router-link>就可以了(循環(huán)具體操作返回上面看第一個(gè)代碼塊),然后在選項(xiàng)卡頁(yè)面引入json,在vue方法中把它賦值給data中的變量,創(chuàng)建后調(diào)用方法即可,之后再增加導(dǎo)航標(biāo)題,只需要在json中增加即可
{ "navData":[ { "title":"子頁(yè)一", "url":"/" }, { "title":"子頁(yè)二", "url":"/PageTwo" }, { "title":"子頁(yè)三", "url":"/PageThree" } ] }
4、之后寫(xiě)好其他頁(yè)面,就能實(shí)現(xiàn)這個(gè)效果了
<template> <h1>這是子頁(yè)一,默認(rèn)顯示</h1> </template> <script> export default { name: "PageOne" } </script> <style scoped> h1{ color: #f2ffff; } </style>
效果圖:
再追加一個(gè)上面所說(shuō)的默認(rèn)是登錄頁(yè)面,然后登錄成功后顯示首頁(yè)的tab選項(xiàng)卡的效果圖,因?yàn)闆](méi)開(kāi)數(shù)據(jù)庫(kù),我就模擬演示一下,手動(dòng)登錄成功進(jìn)入主頁(yè):
好了,以上就完成了一個(gè)簡(jiǎn)單的tab選項(xiàng)卡布局,大家去試試吧。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue中利用better-scroll組件實(shí)現(xiàn)橫向滾動(dòng)功能
橫向滾動(dòng)這個(gè)功能是我們?nèi)粘i_(kāi)發(fā)中經(jīng)常會(huì)遇到的一個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于Vue中如何利用better-scroll組件實(shí)現(xiàn)橫向滾動(dòng)的相關(guān)資料,需要的朋友可以參考下2021-06-06vue v-for直接循環(huán)數(shù)字實(shí)例
今天小編就為大家分享一篇vue v-for直接循環(huán)數(shù)字實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11vue axios調(diào)用接口方法報(bào)錯(cuò)500 internal server err
前端使用axios 訪問(wèn)后端接口時(shí)報(bào)錯(cuò),在瀏覽器中點(diǎn)擊紅色的報(bào)錯(cuò)數(shù)據(jù),本文給大家分享vue axios調(diào)用接口方法報(bào)錯(cuò)500 internal server error的兩種解決方法,感興趣的朋友一起看看吧2023-10-10vue-cli history模式實(shí)現(xiàn)tomcat部署報(bào)404的解決方式
這篇文章主要介紹了vue-cli history模式實(shí)現(xiàn)tomcat部署報(bào)404的解決方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09