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 相关文章推荐
JS 中document.URL 和 windows.location.href 的区别
Nov 11 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 Javascript
node.js中的fs.writeFileSync方法使用说明
Dec 14 Javascript
谈谈impress.js初步理解
Sep 09 Javascript
Javascript中级语法快速入手
Jul 30 Javascript
bootstrap模态框示例代码分享
May 17 Javascript
使用JQ完成表格隔行换色的简单实例
Aug 25 Javascript
vue mixins组件复用的几种方式(小结)
Sep 06 Javascript
EasyUI创建人员树的实例代码
Sep 15 Javascript
使用localStorage替代cookie做本地存储
Sep 25 Javascript
利用JavaScript为句子加标题的3种方法示例
Jan 05 Javascript
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
详解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
文件上传程序的全部源码
2006/10/09 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
Javascript将string类型转换int类型
2010/12/09 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
2014/08/22 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
学生实习自我鉴定
2013/10/11 职场文书
作文批改评语大全
2014/04/23 职场文书
留学推荐信范文
2014/05/10 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
中学生检讨书范文
2014/11/03 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
python基于turtle绘制几何图形
2021/06/15 Python
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL