浅谈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 相关文章推荐
javascript 动态设置已知select的option的value值的代码
Dec 16 Javascript
jquery分页插件AmSetPager(自写)
Apr 15 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
Jun 27 Javascript
基于JavaScript代码实现随机漂浮图片广告
Jan 05 Javascript
谈谈JavaScript的New关键字
Aug 26 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
Oct 24 Javascript
jQuery插件ContextMenu自定义图标
Mar 15 Javascript
简单谈谈关于Angular Cli打包的事
Sep 05 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 jQuery
axios简单实现小程序延时loading指示
Jul 30 Javascript
layui select获取自定义属性方法
Aug 15 Javascript
原生js拖拽功能制作滑动条实例代码
Feb 05 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
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
jQuery 源码分析笔记
2011/05/25 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
php多重接口的实现方法
2015/06/20 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
PHP代码加密的方法总结
2020/03/13 PHP
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
解读ES6中class关键字
2017/11/20 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
python try 异常处理(史上最全)
2019/03/07 Python
Python生成器常见问题及解决方案
2020/03/21 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
什么是类的返射机制
2016/02/06 面试题
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
买房委托公证书
2014/04/08 职场文书
毕业留言寄语大全
2014/04/10 职场文书
化学教育专业求职信
2014/07/08 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS