Vue動(dòng)態(tài)修改網(wǎng)頁(yè)標(biāo)題的方法及遇到問(wèn)題
業(yè)務(wù)需求,進(jìn)入頁(yè)面的時(shí)候,網(wǎng)頁(yè)有個(gè)默認(rèn)標(biāo)題,加載的網(wǎng)頁(yè)內(nèi)容不同時(shí),標(biāo)題需要變更. 例:功能授權(quán),功能授權(quán)(張三).
Vue下有很多的方式去修改網(wǎng)頁(yè)標(biāo)題,這里總結(jié)下解決此問(wèn)題的幾種方案:
一、最笨方案
結(jié)合業(yè)務(wù)直接在Vue生命周期函數(shù) created 和 mounted 中,給 document.title賦值。
<script>
import axios from 'axios'
export default {
created () {
document.title = '功能授權(quán)'
},
mounted() {
axios.get('***').then((d)=>{
document.title = '功能授權(quán)('+ d.Name + ')'
})
}
}
</script>
二、普通方案,使用Vue-Router的beforeEach攔截
項(xiàng)目中使用了Vue Router,在路由文件 index.js 中給需要的路由添加 title。
routes: [{
path: '/',
name: 'home',
component: () => import('@/pages/home/index'),
meta:{
keepAlive: true
}
},
{
path: '/person/auth,
name: 'personAuth',
component: () => import('@/pages/person/auth),
meta:{
title: '功能授權(quán)',
keepAlive: false
}
}
]
在路由的beforeEach 攔截器里處理
router.beforeEach((to, from, next) => {
/* 路由發(fā)生變化修改頁(yè)面title */
if (to.meta.title) {
document.title = to.meta.title
}
})
如果想在頁(yè)面上依據(jù)加載的內(nèi)容不同再變更title時(shí),請(qǐng)參考方式一的 mounted函數(shù)處理邏輯.
三、優(yōu)雅方案,使用Vue 自定義指令(directive)
如前文所提,頁(yè)面獲取不同數(shù)據(jù)狀態(tài)時(shí),需要展示不同的標(biāo)題。那么我們可以結(jié)合vue 自定義指令(directive)可更優(yōu)雅的處理網(wǎng)頁(yè)標(biāo)題的動(dòng)態(tài)更新。
自定義指令 v-web-title的定義
export default {
inserted: function (el, binding) {
const { value } = binding
if (el.dataset.title) { // 方式1,可以給標(biāo)簽的data-title的屬性賦值
document.title = el.dataset.title
} else if (value && value.title) { // 方式2,指令傳參
document.title = value.title
}
},
update (el, binding, vnode, oldVnode) {
const { value } = binding
if (el.dataset.title) {
document.title = el.dataset.title
} else if (value && value.title) {
document.title = value.title
}
}
}
在頁(yè)面上使用v-web-title有兩種方式
1.給標(biāo)簽 data-title屬性賦值
<template>
<div v-web-title
:data-title="textTitle">
</template>
<script>
import axios from 'axios'
export default {
data(){
return {
textTitle:'功能授權(quán)'
}
},
mounted () {
axios.get('***').then((d) => {
this.textTitle = '功能授權(quán)(' + d.Name + ')'
})
}
}
</script>
2.給指令傳參
<template>
<div v-web-title="{title:textTitle}">
</template>
<script>
import axios from 'axios'
export default {
data(){
return {
textTitle:'功能授權(quán)'
}
},
mounted () {
axios.get('***').then((d) => {
this.textTitle = '功能授權(quán)(' + d.Name + ')'
})
}
}
</script>
四、參考
1. vue單頁(yè)面應(yīng)用中動(dòng)態(tài)修改title 主要介紹使用vue-weachat-title 組件
2.vue.js自定義指令詳解 主要介紹自定義指令的鉤子函數(shù),以及指令傳參等
總結(jié)
以上所述是小編給大家介紹的Vue動(dòng)態(tài)修改網(wǎng)頁(yè)標(biāo)題的方法及遇到問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
vue3二次封裝element-ui中的table組件的過(guò)程詳解
這篇文章主要給大家介紹了vue3二次封裝element-ui中的table組件的過(guò)程,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友跟著小編一起來(lái)學(xué)習(xí)吧2024-01-01
element UI 2.15.13與vue2.0表格勾選回顯關(guān)鍵demo
這篇文章主要為大家介紹了element UI 2.15.13與vue2.0表格勾選回顯關(guān)鍵demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
詳解Vue3中shallowRef和shallowReactive的使用
這篇文章主要為大家介紹了Vue3中shallowRef和shallowReactive函數(shù)的使用方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Vue有一定的幫助,需要的可以參考一下2022-07-07
Vue2.x中的父組件傳遞數(shù)據(jù)至子組件的方法
這篇文章主要介紹了Vue2.x中的父組件數(shù)據(jù)傳遞至子組件的方法,需要的朋友可以參考下2017-05-05
vue addRoutes路由動(dòng)態(tài)加載操作
這篇文章主要介紹了vue addRoutes路由動(dòng)態(tài)加載操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
vue video和vue-video-player實(shí)現(xiàn)視頻鋪滿(mǎn)教程
這篇文章主要介紹了vue video和vue-video-player實(shí)現(xiàn)視頻鋪滿(mǎn)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
基于Vue3實(shí)現(xiàn)的圖片散落效果實(shí)例
最近工作中遇到一個(gè)效果還不錯(cuò),所以想著實(shí)現(xiàn)一下,下面這篇文章主要給大家介紹了關(guān)于如何基于Vue3實(shí)現(xiàn)的圖片散落效果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04

