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 相关文章推荐
如何快速的呈现我们的网页的技巧整理
Jul 01 Javascript
用JavaScript实现UrlEncode和UrlDecode的脚本代码
Jul 23 Javascript
jQuery中ajax的load()方法用法实例
Dec 26 Javascript
jQuery中:gt选择器用法实例
Dec 29 Javascript
详解Vue中状态管理Vuex
May 11 Javascript
基于JS实现网页中的选项卡(两种方法)
Jun 16 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
Jul 25 Javascript
jQuery zTree 异步加载添加子节点重复问题
Nov 29 jQuery
vue2.0 常用的 UI 库实例讲解
Dec 12 Javascript
Vue开发之封装分页组件与使用示例
Apr 25 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
Sep 25 Javascript
vue cli4中mockjs在dev环境和build环境的配置详情
Apr 06 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
基于文本的访客签到簿
2006/10/09 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
jquery分页插件jquery.pagination.js使用方法解析
2016/04/01 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
Node.js简单入门前传
2017/08/21 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
python改变日志(logging)存放位置的示例
2014/03/27 Python
从零学Python之入门(二)基本数据类型
2014/05/25 Python
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
Python装饰器知识点补充
2018/05/28 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
亚马逊印度站:Amazon.in
2017/10/15 全球购物
给客户的道歉信
2014/01/13 职场文书
服装设计师求职信
2014/06/04 职场文书
个人工作保证书
2015/02/28 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
学术研讨会主持词
2015/07/04 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书