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

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

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

先是用jq实现了一版

Title
  • click
  • click
  • click
  • click
  • click

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)

})

再看vue版

Title

click0

click1

click2

click3

click4

{ {show}}

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)

}

});

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

你可能感兴趣的:(vue点tab不刷新页面)