基于Vue實(shí)現(xiàn)tab欄切換內(nèi)容不斷實(shí)時(shí)刷新數(shù)據(jù)功能
先說(shuō)一下產(chǎn)品需求,就是有幾個(gè)tab欄,每個(gè)tab欄對(duì)應(yīng)的ajax請(qǐng)求不一樣,內(nèi)容區(qū)域一樣,內(nèi)容為實(shí)時(shí)刷新數(shù)據(jù),每3s需要重新請(qǐng)求,返回的數(shù)據(jù)在內(nèi)容區(qū)域展示,每點(diǎn)擊一次tab欄需停止其他tab欄ajax請(qǐng)求,防止阻塞,首次加載頁(yè)面的時(shí)候又不能5個(gè)ajax同時(shí)請(qǐng)求,只需要請(qǐng)求第一個(gè)就好
也沒(méi)有必要建立5個(gè)區(qū)域,控制顯示隱藏,浪費(fèi)性能,業(yè)務(wù)代碼就不貼了,把大概原理的代碼貼上來(lái)

先是用jq實(shí)現(xiàn)了一版
<!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){
//如果每個(gè)tab的方法不一樣,提前用一個(gè)數(shù)組把方法保存起來(lái)
clearInterval(this.time1)
this.time1=setInterval(this.arr[index],1000)
//以下是調(diào)用同一種方法的時(shí)候可以不需要設(shè)置數(shù)組
this.num = 0
clearInterval(this.time2)
this.time2 = this.fun(index)
},
fun:function(index){
var _this=this;
return setInterval(function(){
//寫個(gè)隨機(jī)數(shù)顯示在頁(yè)面,具體業(yè)務(wù)需求應(yīng)該是ajax請(qǐng)求
var random=String(parseInt(Math.random()*100000000000))
//字符一個(gè)一個(gè)顯示在頁(yè)面上
_this.show=index+random.substring(0,_this.num++);
},300)
}
},
mounted:function(){
this.time1=setInterval(this.arr[0],1000)
}
});
</script>
</body>
</html>
以上所述是小編給大家介紹的基于Vue實(shí)現(xiàn)tab欄切換內(nèi)容不斷實(shí)時(shí)刷新數(shù)據(jù)功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 詳解vue2.0 使用動(dòng)態(tài)組件實(shí)現(xiàn) Tab 標(biāo)簽頁(yè)切換效果(vue-cli)
- 詳解使用vue實(shí)現(xiàn)tab 切換操作
- 解決vue中el-tab-pane切換的問(wèn)題
- Vue.js組件tabs實(shí)現(xiàn)選項(xiàng)卡切換效果
- Vue.js組件tab實(shí)現(xiàn)選項(xiàng)卡切換
- vue Tab切換以及緩存頁(yè)面處理的幾種方式
- VUE的tab頁(yè)面切換的四種方法
- vue實(shí)現(xiàn)tab切換的3種方式及切換保持?jǐn)?shù)據(jù)狀態(tài)
- vue實(shí)現(xiàn)tab切換外加樣式切換方法
- vue實(shí)現(xiàn)tab欄切換效果
相關(guān)文章
Element-UI Table組件上添加列拖拽效果實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了Element-UI Table組件上添加列拖拽效果的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Vue-cli3.X使用px2 rem遇到的問(wèn)題及解決方法
這篇文章主要介紹了Vue-cli3.X使用px2rem遇到的問(wèn)題及解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
基于vue和react的spa進(jìn)行按需加載的實(shí)現(xiàn)方法
這篇文章主要介紹了基于vue和react的spa進(jìn)行按需加載,需要的朋友可以參考下2018-09-09
vue項(xiàng)目中使用pinyin轉(zhuǎn)換插件方式
這篇文章主要介紹了vue項(xiàng)目中使用pinyin轉(zhuǎn)換插件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04

