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 相关文章推荐
JavaScript 错误处理与调试经验总结
Aug 10 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
Aug 11 Javascript
JavaScript仿flash遮罩动画效果
Jun 15 Javascript
浅析Bootstrap验证控件的使用
Jun 23 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
Sep 28 Javascript
bootstrap可编辑下拉框jquery.editable-select
Oct 12 jQuery
Vue使用vue-area-linkage实现地址三级联动效果的示例
Jun 27 Javascript
JavaScript中创建原子的方法总结
Aug 26 Javascript
p5.js临摹动态图形实现方法详解
Oct 23 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
Jul 26 Javascript
vuex刷新后数据丢失的解决方法
Oct 18 Javascript
解决vue watch数据的方法被调用了两次的问题
Nov 07 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
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
php上传文件问题汇总
2015/01/30 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
快速解决PHP调用Word组件DCOM权限的问题
2017/12/27 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
2013/12/12 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
vue-lazyload使用总结(推荐)
2018/11/01 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Flask解决跨域的问题示例代码
2018/02/12 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
利用python将json数据转换为csv格式的方法
2018/03/22 Python
简单实现Python爬取网络图片
2018/04/01 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
写一个用矩形法求定积分的通用函数
2012/11/08 面试题
技校生自我鉴定
2013/12/08 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
高效课堂标语
2014/06/26 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
初中生物教学随笔
2015/08/15 职场文书