<!doctype html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta data-n-head="true" name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title></title>
<script src="http://cdn.bootcss.com/vue/1.0.17/vue.min.js"></script>
<style type="text/css">
.pull-dou{
height: 100%;
overflow-y: auto;
position: relative;
}
.pull-dou>.up-loading{
line-height: 60px;
text-align: center;
width: 100%;
position: absolute;
transform: translateY(-100%);
transition:transform 0.6s;
}
.pull-dou>.up-loading.showing{
transform: translateY(0);
}
.pull-dou>.down-loading{}
</style>
</head>
<body>
<div id="demo" style="height: 360px;">
<pull-dou :top-pull="topPull" :bottom-pull="bottomPull">
<div v-for="a in 66">99</div>
</pull-dou>
</div>
<script>
Vue.component("pull-dou",{
template:
"<div class='pull-dou' @touchstart='touchstart' @touchmove='touchmove' @touchend='touchend'>" +
" <div class='up-loading' v-el:uploading='' v-bind:class='{showing:state==\"loading-up\"}'>loading...</div>" +
" <slot></slot>" +
" <div class='down-loading' v-el:downloading>{{state=='loading-down'?'加載中':'下滑加載更多'}}</div>" +
"</div>"
,
attached:function(){
this.init();
},
computed:{
uploading:function(){return this.$els.uploading},
downloading:function(){return this.$els.downloading},
scrollEl:function(){return this.$el}
},
data:function(){
return {
bottomReached:false,
distanceIndex:2,
state:"",
startY:0,
beforeDiff:0,
diff:0,
startScrollTop:0
}
},
props:{
//下滑閾值
triggerDistance:{default:70},
triggerDistanceBottom:{default:60},
topPull : {default:function(next){setTimeout(next,1200)}},
bottomPull : {default:function(next){setTimeout(next,500)}},
},
methods:{
checkBottomReached() {
return this.scrollEl.scrollTop + this.scrollEl.offsetHeight + 1 >= this.scrollEl.scrollHeight;
},
_endTopPull:function(){
var m = this;
m.state=""
},
_endBottomPull:function(){
var m = this;
m.state="";
},
touchstart(event){
this.startY = event.touches[0].clientY;
this.beforeDiff = this.diff;
this.startScrollTop = this.scrollEl.scrollTop;
this.bottomReached = this.checkBottomReached();
},
touchmove(event){
var m = this;
this.currentY = event.touches[0].clientY;
this.distance = (this.currentY - this.startY) / this.distanceIndex + this.beforeDiff;
this.direction = this.distance > 0 ? 'down' : 'up';
if (this.startScrollTop === 0 && this.direction === 'down') {
event.preventDefault();
event.stopPropagation();
if (this.distance >= this.triggerDistance && this.state !== 'loading-up' && this.state !== 'loading-down') {
//console.log("觸發(fā)了");
this.state = 'loading-up';
this.topPull(m._endTopPull);
}
}else if(this.bottomReached && this.direction === 'up'){
if(this.state !== 'loading-up' && this.state !== 'loading-down'){
//console.log("到底了");
this.state = 'loading-down';
this.bottomPull(m._endBottomPull);
}
}
},
touchend(event){},
init:function(){
var m = this;
m._up_height = m.uploading.offsetHeight;
m._down_height = m.downloading.offsetHeight;
},
}
})
</script>
<script>
function moniAjax(){
return new Promise((resolve,reject)=>{
setTimeout(resolve,Math.random()*2000 + 1000)
})
}
new Vue({
el:"#demo",
data:{},
methods:{
topPull:function(next){
console.log("這里寫刷新的代碼");
moniAjax().then(function(){
next();
})
},
bottomPull:function(next){
console.log("這里寫刷新翻頁的代碼");
moniAjax().then(function(){
next();
})
}
}
})
</script>
</body>
</html>
vue上拉加載,下拉刷新
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門陈醒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瞧甩,你說我怎么就攤上這事钉跷。” “怎么了肚逸?”我有些...
- 文/不壞的土叔 我叫張陵爷辙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我朦促,道長(zhǎng)膝晾,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任务冕,我火速辦了婚禮血当,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘禀忆。我一直安慰自己臊旭,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布箩退。 她就那樣靜靜地躺著离熏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戴涝。 梳的紋絲不亂的頭發(fā)上滋戳,一...
- 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼钝满!你這毒婦竟也來了兜粘?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬榮一對(duì)情侶失蹤弯蚜,失蹤者是張志新(化名)和其女友劉穎孔轴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碎捺,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡路鹰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了收厨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晋柱。...
- 正文 年R本政府宣布碑诉,位于F島的核電站,受9級(jí)特大地震影響侥锦,放射性物質(zhì)發(fā)生泄漏进栽。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一恭垦、第九天 我趴在偏房一處隱蔽的房頂上張望泪幌。 院中可真熱鬧,春花似錦署照、人聲如沸祸泪。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽没隘。三九已至,卻和暖如春禁荸,著一層夾襖步出監(jiān)牢的瞬間右蒲,已是汗流浹背阀湿。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像间坐,于是被迫代替她去往敵國和親灾挨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 插件地址引用文章 一竹宋、什么事better-scroll劳澄? better-scroll 是一款重點(diǎn)解決移動(dòng)端(已支持...
- vue目前是眾所周知的流行框架大家都知道的秒拔,vue全家桶的成員是:vue-cli,vuex,vue-router,...
- (一) vue的生命周期 https://segmentfault.com/a/1190000008010666 ...
- Step 1: create vue project and install vue-scroller via n...