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 相关文章推荐
input、button的不同type值在ajax提交表单时导致的陷阱
Feb 24 Javascript
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
Apr 21 Javascript
基于JavaScript代码实现自动生成表格
Jun 15 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
Jul 07 Javascript
简单分析javascript中的函数
Sep 10 Javascript
微信小程序(应用号)简单实例应用及实例详解
Sep 26 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
Oct 28 Javascript
Jquery根据浏览器窗口改变调整大小的方法
Feb 07 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
Oct 31 Javascript
swiper 自动图片无限轮播实现代码
May 21 Javascript
javascript随机变色实例代码
Oct 15 Javascript
原生js实现购物车功能
Sep 23 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实现的生成静态HTML速度快类库
2007/03/31 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
jquery选择checked在ie8普通模式下的问题
2014/02/12 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
详解vue路由
2020/08/05 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
Python中的super()方法使用简介
2015/08/14 Python
Python探索之修改Python搜索路径
2017/10/25 Python
django_orm查询性能优化方法
2018/08/20 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
餐饮业创业计划书范文
2014/01/06 职场文书
捐助倡议书范文
2014/04/15 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
党员公开承诺书2015
2015/01/21 职场文书
毕业生对母校寄语
2015/02/26 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
致运动员的广播稿
2015/08/19 职场文书