基于Vue实现tab栏切换内容不断实时刷新数据功能


Posted in Javascript onApril 13, 2017

先说一下产品需求,就是有几个tab栏,每个tab栏对应的ajax请求不一样,内容区域一样,内容为实时刷新数据,每3s需要重新请求,返回的数据在内容区域展示,每点击一次tab栏需停止其他tab栏ajax请求,防止阻塞,首次加载页面的时候又不能5个ajax同时请求,只需要请求第一个就好

也没有必要建立5个区域,控制显示隐藏,浪费性能,业务代码就不贴了,把大概原理的代码贴上来

基于Vue实现tab栏切换内容不断实时刷新数据功能

先是用jq实现了一版

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 <meta name="renderer" content="webkit">
 <title>Title</title>
 <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<div>
 <ul>
 <li>click</li>
 <li>click</li>
 <li>click</li>
 <li>click</li>
 <li>click</li>
 </ul>
</div>
<script>
 var arr=[
 function(){console.log(0);},
 function(){console.log(1);},
 function(){console.log(2);},
 function(){console.log(3);},
 function(){console.log(4);}
 ];
 var seti=setInterval(arr[0],1000)
 $('li').click(function(){
 clearInterval(seti)
 seti=setInterval(arr[$(this).index()],1000)
 })
</script>
</body>
</html>

再看vue版

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 <meta name="renderer" content="webkit">
 <title>Title</title>
 <script src="https://unpkg.com/vue@2.2.6/dist/vue.min.js"></script>
</head>
<body>
<div id="vm">
 <button @click="tab(0)">click0</button>
 <button @click="tab(1)">click1</button>
 <button @click="tab(2)">click2</button>
 <button @click="tab(3)">click3</button>
 <button @click="tab(4)">click4</button>
 <div>
 <p>{{show}}</p>
 </div>
</div>
<script>
 var vm1 = new Vue({
 el: '#vm',
 data: {
  arr:[
  function(){console.log(0);},
  function(){console.log(1);},
  function(){console.log(2);},
  function(){console.log(3);},
  function(){console.log(4);}
  ],
  time1:'',
  time2:'',
  show:'',
  num:0,
 },
 methods: {
  tab: function(index){
  //如果每个tab的方法不一样,提前用一个数组把方法保存起来
  clearInterval(this.time1)
  this.time1=setInterval(this.arr[index],1000)
  //以下是调用同一种方法的时候可以不需要设置数组
  this.num = 0
  clearInterval(this.time2)
  this.time2 = this.fun(index)
  },
  fun:function(index){
  var _this=this;
  return setInterval(function(){
   //写个随机数显示在页面,具体业务需求应该是ajax请求
   var random=String(parseInt(Math.random()*100000000000))
   //字符一个一个显示在页面上
   _this.show=index+random.substring(0,_this.num++);
  },300)
  }
 },
 mounted:function(){
  this.time1=setInterval(this.arr[0],1000)
 }
 });
</script>
</body>
</html>

以上所述是小编给大家介绍的基于Vue实现tab栏切换内容不断实时刷新数据功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript 模式实例 观察者模式
Oct 24 Javascript
jQuery实现单行文字间歇向上滚动源代码
Jun 02 Javascript
提取字符串中年月日的函数代码
Nov 05 Javascript
Ajax提交与传统表单提交的区别说明
Feb 07 Javascript
jQuery简单操作cookie的插件实例
Jan 13 Javascript
Javascript Event(事件)的传播与冒泡
Jan 23 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
May 02 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
Aug 30 Javascript
layui自定义ajax左侧三级菜单
Jul 26 Javascript
Angular8 实现table表格表头固定效果
Jan 03 Javascript
JavaScript实现班级抽签小程序
May 19 Javascript
JavaScript数据结构之二叉树的计数算法示例
Apr 13 #Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 #Javascript
JavaScript数据结构之二叉树的查找算法示例
Apr 13 #Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 #jQuery
JavaScript中this的用法及this在不同应用场景的作用解析
Apr 13 #Javascript
vue如何引用其他组件(css和js)
Apr 13 #Javascript
JavaScript数据结构之二叉树的遍历算法示例
Apr 13 #Javascript
You might like
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
php通过记录IP来防止表单重复提交方法分析
2014/12/16 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
js最简单的双向绑定实例讲解
2018/01/02 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
举例讲解Python中的算数运算符的用法
2015/05/13 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
python将字符串转换成json的方法小结
2019/07/09 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
python Canny边缘检测算法的实现
2020/04/24 Python
Python实现播放和录制声音的功能
2020/08/12 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
实例讲解利用HTML5 Canvas API操作图形旋转的方法
2016/03/22 HTML / CSS
家长给孩子的表扬信
2014/01/17 职场文书
机械制造专业毕业生求职信
2014/03/02 职场文书
财会专业大学生求职信
2014/09/26 职场文书
2014年建筑工程工作总结
2014/12/03 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
文艺部部长竞选稿
2015/11/21 职场文书