浅谈Vue.js 关于页面加载完成后执行一个方法的问题


Posted in Javascript onApril 01, 2019

首先我们会想着在mounted或者created里面加入想要执行的方法,但是有的时候会遇到在你执行这个方法的时候,页面还并没有被渲染完成,所以就会出现这个方法在匹配页面标签报错的情况。

解决思路:

1.通过子页面调用父页面的方法,因为在子页面开始渲染的时候,你的父页面肯定是已经渲染好了的,前提这里的方法中是去找寻父页面的标签。

2.直接在本页面监视一个参数,发现参数被初始化了,说明页面也已经加载完成,因为你的页面用到了这个参数。

方法1案例:tab页里的子页面如果没有内容就隐藏

父页面代码

<el-tabs v-model="initTab" type="card">
 <el-tab-pane label="1信息" name="tab1">
  1
 </el-tab-pane>
 <el-tab-pane label="2报告" name="tab2">
  2
 </el-tab-pane>
 <el-tab-pane label="3信息" name="tab3">
  3
 </el-tab-pane>
 <el-tab-pane label="4信息" name="tab4">
  <ziyemian-group @tabShow="tabShow" title="4信息" v-if="detailInfo">
  </ziyemian-group>
 
 </el-tab-pane>
 <el-tab-pane label="5信息" name="tab5">
  5
 </el-tab-pane>
 <el-tab-pane label="其它信息" name="tab6">
  6
 </el-tab-pane>
</el-tabs>
 
import ZiyemianGroup from './ZiyemianGroup.vue'
components: {
 ZiyemianGroup
},
data () {
  return {
    detailInfo: {},
    initTab:‘tab1'
  }
}
methods: {
 tabShow: (data) => {
  document.getElementsByClassName('el-tabs__item').item(4).style.display = data
 },
}

然后是ZiyemianGroup.vue的代码,这里主要就是方法调用,页面自己搞定

data () {
 return {
  list: []
 }
},
mounted () {
 this.init()
},
methods: {
 init() {
  if (list.length > 0) {
    this.$emit('whiteShow', 'inline')
  } else {
    this.$emit('whiteShow', 'none')
  }
 )
}

list是子页面的内容,这样如果子页面没有内容就可以隐藏掉了

方法2案例:我这边需要tab页隐藏

<el-tabs v-model="initTab" type="card">
 <el-tab-pane label="1信息" name="tab1">
  1
 </el-tab-pane>
 <el-tab-pane label="2报告" name="tab2">
  2
 </el-tab-pane>
 <el-tab-pane label="3信息" name="tab3">
  3
 </el-tab-pane>
 <el-tab-pane label="4信息" name="tab4">
  <ziyemian-group title="4信息" v-if="detailInfo">
  </ziyemian-group>
 
 </el-tab-pane>
 <el-tab-pane label="5信息" name="tab5">
  5
 </el-tab-pane>
 <el-tab-pane label="其它信息" name="tab6">
  6
 </el-tab-pane>
</el-tabs>
 
import ZiyemianGroup from './ZiyemianGroup.vue'
components: {
 ZiyemianGroup
},
data () {
  return {
    detailInfo: {},
    initTab:‘tab1'
  }
}
watch: {
 detailInfo: function () {
  this.$nextTick(function () {
   this.tabShow()
  })
 }
},
methods: {
  tabShow () {
    document.getElementsByClassName('el-tabs__item').item(6).style.display = 'none' // 隐藏tab6
  }
}

nextTick方法,意思是在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

隐藏tab的方法我用了原生js,因为vue生成后的页面和写的vue页面有所差别,所以我直接用了最笨的方法进行匹配。

以上所述是小编给大家介绍的Vue.js 关于页面加载完成后执行一个方法的问题详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery实现表头固定效果的实例代码
May 24 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
Dec 18 Javascript
js实现网页多级级联菜单代码
Aug 20 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
Feb 13 Javascript
jQuery中绑定事件bind() on() live() one()的异同
Feb 23 Javascript
iscroll.js滚动加载实例详解
Jul 18 Javascript
微信小程序使用车牌号输入法的示例代码
Aug 20 Javascript
layui表格 返回的数据状态异常的解决方法
Sep 10 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
Nov 15 Javascript
vue组件库的在线主题编辑器的实现思路
Apr 03 Javascript
关于angular 8.1使用过程中的一些记录
Nov 25 Javascript
element-ui 弹窗组件封装的步骤
Jan 22 Javascript
VUE脚手架的下载和配置步骤详解
Apr 01 #Javascript
详解JavaScript中的函数、对象
Apr 01 #Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 #Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 #Javascript
基于elementUI实现图片预览组件的示例代码
Mar 31 #Javascript
微信小程序访问豆瓣电影api的实现方法
Mar 31 #Javascript
vue项目首屏打开速度慢的解决方法
Mar 31 #Javascript
You might like
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
php include加载文件两种方式效率比较
2010/08/08 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
js中的this关键字详解
2013/09/25 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
django Serializer序列化使用方法详解
2018/10/16 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
Django中间件基础用法详解
2019/07/18 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
美国校服网上商店:French Toast
2019/10/08 全球购物
RealTek面试题
2016/06/28 面试题
Hibernate持久层技术
2013/12/16 面试题
历史学专业毕业生求职信
2013/09/27 职场文书
实习教师自我鉴定
2013/12/12 职场文书
采购助理岗位职责
2014/02/16 职场文书
学生喝酒检讨书500字
2014/11/02 职场文书
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js