对照着jquery来学vue.js系列之配合thinkphp下拉获取分页数据
上篇文章介绍了vue.js如何ajax获取数据;
接着不可避免就遇到的是;
如何进行数据分页呢?
这里以thinkphp为示例讲解;其他场景性质一样;
示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin
示例链接:localhost/Home/Vue/web_page
项目中有张表province_city_area;
里面是全国的3000多个城市;这里就拿它做分页了;
一:thinkphp获取分页数据/Application/Home/Controller/VueController.class.php<br>
/**<br>
* 配合thinkphp分页示例<br>
*/<br>
public function page(){<br>
// 获取总条数<br>
$count=M('Province_city_area')->count();<br>
// 每页多少条数据<br>
$limit=100;<br>
$page=new \Org\Nx\Page($count,$limit);<br>
$data=M('Province_city_area')<br>
->limit($page->firstRow.','.$page->listRows)<br>
->select();<br>
echo json_encode($data);<br>
}
二:前端接收数据的核心部分;
要实现的是移动端往那种下拉就加载数据的效果;
首先是先用ready方法加载第一页的数据显示到页面中;
设置一个变量i=1;var vm=new Vue({<br>
el: '.box',<br>
data: {<br>
city: []<br>
},<br>
ready: function(){<br>
this.$http.get(url).then(function(response){<br>
this.city=response.data;<br>
})<br>
},<br>
})
然后呢;判断当滚动轴到底部的时候;
让i+1 作为get参数中的页数;
加载下一页的数据;并追加到city中;i++<br>
vm.$http.get(pageData.url+'/p/'+pageData.i).then(function(response){<br>
// 用concat把下一页的数据追加到city中<br>
vm.city=vm.city.concat(response.data); <br>
})
三:完整的html;
/tpl/Home/Vue/web_page.htmlnbsp;html><br>
<br>
<br>
<meta>
<br>
<title>Vue 配合thinkphp分页示例</title>
<br>
<br>
<br>
<p></p>
<br>
<p></p>
<br>
<div>
<br>
<p>{{item.name}}</p>
<br>
</div>
<br>
<br>
<p>沒有資料了</p>
<br>
<br>
<vue></vue><br>
<script><br />
<br />
// 取得資料的url<br />
var pageData={<br />
url: "{:U('Home/Vue/page')}",<br />
i: 1,<br />
height: 0,<br />
over: false<br />
}<br />
var vm=new Vue({<br />
el: '.box',<br />
data: {<br />
city: []<br />
},<br />
ready: function(){<br />
this.$http.get(pageData.url).then(function(response){<br />
this.city=response.data;<br />
})<br />
},<br />
})<br />
<br />
<br />
//取得捲軸目前的位置 <br />
function getScrollTop() { <br />
var scrollTop=0; <br />
if(document.documentElement && document.documentElement.scrollTop){ <br />
scrollTop=document.documentElement.scrollTop; <br />
}else if(document.body) { <br />
scrollTop=document.body.scrollTop; <br />
} <br />
return scrollTop; <br />
} <br />
<br />
//取得目前可視範圍的高度 <br />
function getClientHeight() { <br />
var clientHeight=0; <br />
if(document.body.clientHeight && document.documentElement.clientHeight){ <br />
clientHeight=Math.min(document.body.clientHeight, document.documentElement.clientHeight); <br />
}else{ <br />
clientHeight=Math.max(document.body.clientHeight, document.documentElement.clientHeight); <br />
} <br />
return clientHeight; <br />
} <br />
<br />
//取得文件完整的高度 <br />
function getScrollHeight() { <br />
return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); <br />
} <br />
<br />
// 新增 載入中樣式<br />
function addLoading(){<br />
var loading=document.createElement('p');<br />
loading.className='loading'<br />
loading.innerHTML='載入中...';<br />
document.body.appendChild(loading);<br />
}<br />
<br />
// 刪除 載入中樣式<br />
function removeLoading(){<br />
var loading=document.querySelector('.loading');<br />
loading.parentNode.removeChild(loading);<br />
}<br />
<br />
// 把載入中 改成 沒有資料了<br />
function loadingToOver(){<br />
var loading=document.querySelector('.over');<br />
loading.style.display='block';<br />
}<br />
<br />
// 監聽滾動事件<br />
window.onscroll=function () {<br />
if (pageData.over) {<br />
return false;<br />
}<br />
if ( getScrollHeight()-(getScrollTop()+getClientHeight())<=50 ) {<br />
// 頁數+1<br />
pageData.i++<br />
// 顯示載入<br />
addLoading();<br />
// 取得下一頁的資料<br />
vm.$http.get(pageData.url+'/p/'+pageData.i).then(function(response){<br />
removeLoading();<br />
if(response.data.length==0){<br />
pageData.over=true;<br />
loadingToOver();<br /> }else{<br />
vm.city=vm.city.concat(response.data); <br />
}<br />
})<br />
} <br />
} <br />
<br />
<br />
</script><br>
<br>
這已經簡單的實作了下拉載入資料的功能;
別被上面這麼長的程式碼嚇到了;
裡面更多的是用原生的js實現滾動軸監聽事件的;
那個加載中和加載完成的樣式根據業務設計就好了;
得;最近被一些事搞的很不在狀態;
這篇跳票了很多天的文章終於寫完了;
更多的直接查看原始碼和註解吧;
白俊遙部落格 http://baijunyao.com/article/88

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
視覺化網頁開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中