vue.js配合thinkphp下拉获取分页数据
对照着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无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

了解Python编程的入门级代码示例Python是一种简单易学,功能强大的编程语言。对于初学者来说,了解Python编程的入门级代码示例是非常重要的。本文将为您提供一些具体的代码示例,帮助您快速入门。打印HelloWorldprint("HelloWorld")这是Python中最简单的代码示例。print()函数用于将指定的内容输出

PHP变量存储程序运行期间的值,对于构建动态且交互式的WEB应用程序至关重要。本文将深入探讨php变量,并通过10个真实的示例展示它们的实际应用。1.存储用户输入$username=$_POST["username"];$passWord=$_POST["password"];此示例从表单提交中提取用户名和密码,并将其存储在变量中以供进一步处理。2.设置配置值$database_host="localhost";$database_username="username";$database_pa

《Go语言编程实例:Web开发中的代码示例》随着互联网的快速发展,Web开发已经成为各行业中必不可少的一部分。作为一门功能强大且性能优越的编程语言,Go语言在Web开发中越来越受到开发者们的青睐。本文将通过具体的代码示例,介绍如何利用Go语言进行Web开发,让读者能够更好地理解和运用Go语言来构建自己的Web应用。1.简单的HTTP服务器首先,让我们从一个

Java冒泡排序最简单的代码示例冒泡排序是一种常见的排序算法,它的基本思想是通过相邻元素的比较和交换来将待排序序列逐步调整为有序序列。下面是一个简单的Java代码示例,演示了如何实现冒泡排序:publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

标题:从入门到精通:Go语言中常用数据结构的代码实现数据结构在编程中起着至关重要的作用,它是程序设计的基础。在Go语言中,有许多常用的数据结构,掌握这些数据结构的实现方式对于成为一名优秀的程序员至关重要。本文将介绍Go语言中常用的数据结构,并给出相应的代码示例,帮助读者从入门到精通这些数据结构。1.数组(Array)数组是一种基本的数据结构,是一组相同类型

华为云边缘计算对接指南:Java代码示例快速实现接口随着物联网技术的快速发展和边缘计算的兴起,越来越多的企业开始关注边缘计算的应用。华为云提供了边缘计算服务,为企业提供了高可靠的计算资源和便捷的开发环境,使得边缘计算应用更加容易实现。本文将介绍如何通过Java代码快速实现华为云边缘计算的接口。首先,我们需要准备好开发环境。确保你已经安装了Java开发工具包(

如何使用PHP编写库存管理系统中的库存分仓管理功能代码库存管理是许多企业中不可或缺的一部分。对于拥有多个仓库的企业来说,库存分仓管理功能尤为重要。通过合理管理和跟踪库存,企业可以实现不同仓库之间的库存调拨,优化运营成本,改善协同效率。本文将介绍如何使用PHP编写库存分仓管理功能的代码,并为您提供相关的代码示例。一、建立数据库在开始编写库存分仓管理功能的代码之

Java选择排序法代码编写指南及示例选择排序是一种简单直观的排序算法,其思想是每次从未排序的元素中选择最小(或最大)的元素进行交换,直到所有元素排序完成。本文将提供选择排序的代码编写指南,并附上具体的Java示例代码。算法原理选择排序的基本原理是将待排序数组分为已排序和未排序两部分,每次从未排序部分选择最小(或最大)的元素,将其放到已排序部分的末尾。重复上述
