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延迟加载(setTimeout) JS最后加载
Jul 15 Javascript
JQuery动态给table添加、删除行 改进版
Jan 19 Javascript
中止javascript执行的方法
Feb 14 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
Apr 12 Javascript
分享一道关于闭包、bind和this的面试题
Feb 20 Javascript
bootstrap实现的自适应页面简单应用示例
Mar 09 Javascript
Vue computed计算属性的使用方法
Jul 14 Javascript
node.js-v6新版安装具体步骤(分享)
Sep 06 Javascript
详解Vue-cli代理解决跨域问题
Sep 27 Javascript
PostgreSQL Node.js实现函数计算方法示例
Feb 12 Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 13 Javascript
Javascript如何实现双指控制图片功能
Feb 25 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
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
php日期操作技巧小结
2016/06/25 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
php DES加密算法实例分析
2019/09/18 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
Js跳出两级循环方法代码实例
2020/09/22 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
专科毕业生就业推荐信
2013/11/01 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
企业务虚会发言材料
2014/10/20 职场文书
母亲节寄语大全
2015/02/27 职场文书
Python图片处理之图片裁剪教程
2021/05/27 Python