Vue动态修改网页标题的方法及遇到问题


Posted in Javascript onJune 09, 2019

业务需求,进入页面的时候,网页有个默认标题,加载的网页内容不同时,标题需要变更. 例:功能授权,功能授权(张三).

Vue下有很多的方式去修改网页标题,这里总结下解决此问题的几种方案:

一、最笨方案

结合业务直接在Vue生命周期函数 created 和 mounted 中,给 document.title赋值。

<script>
import axios from 'axios'
export default {
 created () {
 document.title = '功能授权'
 },
 mounted() {
 axios.get('***').then((d)=>{
 document.title = '功能授权('+ d.Name + ')'
 })
 }
}
</script>

二、普通方案,使用Vue-Router的beforeEach拦截

项目中使用了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: '功能授权',
 keepAlive: false
 }
 }
 ]

在路由的beforeEach 拦截器里处理

router.beforeEach((to, from, next) => {
 /* 路由发生变化修改页面title */
 if (to.meta.title) {
 document.title = to.meta.title
 }
})

如果想在页面上依据加载的内容不同再变更title时,请参考方式一的 mounted函数处理逻辑.

三、优雅方案,使用Vue 自定义指令(directive)

如前文所提,页面获取不同数据状态时,需要展示不同的标题。那么我们可以结合vue 自定义指令(directive)可更优雅的处理网页标题的动态更新。

自定义指令 v-web-title的定义

export default {
 inserted: function (el, binding) {
 const { value } = binding
 if (el.dataset.title) { // 方式1,可以给标签的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
 }
 }
}

在页面上使用v-web-title有两种方式

1.给标签 data-title属性赋值

<template>
 <div v-web-title
 :data-title="textTitle">
</template>
<script>
import axios from 'axios'
export default {
 data(){
 return {
 textTitle:'功能授权'
 }
 },
 mounted () {
 axios.get('***').then((d) => {
 this.textTitle = '功能授权(' + d.Name + ')'
 })
 }
}
</script>

2.给指令传参

<template>
 <div v-web-title="{title:textTitle}">
</template>
<script>
import axios from 'axios'
export default {
 data(){
 return {
 textTitle:'功能授权'
 }
 },
 mounted () {
 axios.get('***').then((d) => {
 this.textTitle = '功能授权(' + d.Name + ')'
 })
 }
}
</script>

四、参考

1. vue单页面应用中动态修改title 主要介绍使用vue-weachat-title 组件

2.vue.js自定义指令详解 主要介绍自定义指令的钩子函数,以及指令传参等

总结

以上所述是小编给大家介绍的Vue动态修改网页标题的方法及遇到问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
juqery 学习之三 选择器 可见性 元素属性
Nov 25 Javascript
按钮JS复制文本框和表格的代码
Apr 01 Javascript
ajax与302响应代码测试
Oct 23 Javascript
checkbox选中与未选中判断示例
Aug 04 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
Jun 01 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 Javascript
JSON创建键值对(key是中文或者数字)方式详解
Aug 24 Javascript
JS实现在文本指定位置插入内容的简单示例
Dec 22 Javascript
编写React组件项目实践分析
Mar 04 Javascript
bootstrap table表格插件之服务器端分页实例代码
Sep 12 Javascript
vue实现双向绑定和依赖收集遇到的坑
Nov 29 Javascript
详解Node.js异步处理的各种写法
Jun 09 #Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 #Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 #Javascript
微信小程序与webview交互实现支付功能
Jun 07 #Javascript
在微信小程序中使用vant的方法
Jun 07 #Javascript
微信小程序实现折线图的示例代码
Jun 07 #Javascript
微信小程序如何刷新当前界面的实现方法
Jun 07 #Javascript
You might like
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
PHP小教程之实现链表
2014/06/09 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
js 链式延迟执行DOME
2012/01/04 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
Python实现购物系统(示例讲解)
2017/09/13 Python
python2与python3共存问题的解决方法
2018/09/18 Python
python for循环remove同一个list过程解析
2019/08/14 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
市场营销专业毕业生自荐信
2013/11/02 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL