基于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 延迟加载技术(lazyload)简单实现
Jan 17 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
Nov 19 Javascript
JavaScript对IE操作的经典代码(推荐)
Mar 10 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
Nov 04 Javascript
JavaScript 数据类型详解
Mar 13 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 Javascript
详解Vue 事件修饰符capture 的使用
Dec 29 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
Mar 26 Javascript
javascript中一些奇葩的日期换算方法总结
Nov 14 Javascript
Vue源码解析之数组变异的实现
Dec 04 Javascript
js实现中文实时时钟
Jan 15 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
PHP也可以?成Shell Script
2006/10/09 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
python thrift 实现 单端口多服务的过程
2020/06/08 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
python Zmail模块简介与使用示例
2020/12/19 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
外企测试工程师面试题
2015/02/01 面试题
保险专业大专生求职信
2013/10/26 职场文书
小学生新学期寄语
2014/01/19 职场文书
安全大检查反思材料
2014/01/31 职场文书
会计专业自我评价
2014/02/12 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
商务信函英语问候语
2015/11/10 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
警用民用对讲机找不同
2022/02/18 无线电
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android