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 相关文章推荐
超级有用的13个基于jQuery的内容滚动插件和教程
Jul 31 Javascript
Javascript面向对象设计一 工厂模式
Dec 20 Javascript
jQuery extend 的简单实例
Sep 18 Javascript
JS函数重载的解决方案
May 13 Javascript
JavaScript时间操作之年月日星期级联操作
Jan 15 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
Jun 08 Javascript
第一次接触神奇的Bootstrap基础排版
Jul 26 Javascript
jQuery Ajax全解析
Feb 13 Javascript
javascript 中的继承实例详解
May 05 Javascript
JavaScript对JSON数据进行排序和搜索
Jul 24 Javascript
React 路由懒加载的几种实现方案
Oct 23 Javascript
如何通过shell脚本自动生成vue文件详解
Sep 10 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
PHP 第二节 数据类型之转换
2012/04/28 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
Javascript浅谈之this
2013/12/17 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
2018/01/21 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
简单的Python抓taobao图片爬虫
2014/10/26 Python
Python实现的Excel文件读写类
2015/07/30 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
安装好Pycharm后如何配置Python解释器简易教程
2019/06/28 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
django 模型字段设置默认值代码
2020/07/15 Python
大学在校生求职信范文
2013/11/21 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
上海世博会口号
2014/06/19 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书