基于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 相关文章推荐
jquery 输入框数字限制插件
Nov 10 Javascript
javascript replace()正则替换实现代码
Feb 26 Javascript
jquery实现简单的自动播放幻灯片效果
Jun 13 Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 Javascript
基于JavaScript实现购物网站商品放大镜效果
Sep 06 Javascript
Bootstrap table简单使用总结
Feb 15 Javascript
单行 JS 实现移动端金钱格式的输入规则
May 22 Javascript
jQuery实现锚点向下平滑滚动特效示例
Aug 29 jQuery
浅析JS中回调函数及用法
Jul 25 Javascript
vue+moment实现倒计时效果
Aug 26 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
vue中父子组件的参数传递和应用示例
Jan 04 Vue.js
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
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
PHP实现添加购物车功能
2017/03/06 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
Python做简单的字符串匹配详解
2017/03/21 Python
Selenium定位元素操作示例
2018/08/10 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
苏宁红孩子母婴商城:redbaby
2017/02/12 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
电气专业推荐信范文
2013/11/18 职场文书
励志演讲稿大全
2014/08/21 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
浅谈PHP7中的一些小技巧
2021/05/29 PHP
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
Win11 BitLocker 驱动器加密
2022/04/19 数码科技
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server