vue.js-列表分页
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <title>vue-列表分页</title>
- <script src="js/vue.js"></script>
- <script src="js/jquery.js"></script>
- <style>
- body {
- font-family: "Segoe UI";
- }
- li {
- list-style: none;
- }
- a {
- text-decoration: none;
- }
- .pagination {
- position: relative;
- }
- .pagination li {
- display: inline-block;
- margin: 0 5px;
- }
- .pagination li a {
- padding: .5rem 1rem;
- display: inline-block;
- border: 1px solid #ddd;
- background: #fff;
- color: #0E90D2;
- }
- .pagination li a:hover {
- background: #eee;
- }
- .pagination li.active a {
- background: #0E90D2;
- color: #fff;
- }
- table,
- td {
- border: 1px solid #cccccc;
- border-collapse: collapse;
- }
- table {
- width: 1090px;
- margin: 20px auto;
- }
- tr {
- line-height: 30px;
- }
- td {
- text-align: center;
- }
- </style>
- </head>
- <body>
- <script type="text/x-template" id="page">
- <ul class="pagination">
- <li v-show="current != 1" @click="current-- && goto(current--)">
- <a href="#">上一页</a>
- </li>
- <li v-for="index in pages" @click="goto(index)" :class="{'active':current == index}" :key="index">
- <a href="#">{{index}}</a>
- </li>
- <li v-show="allpage != current && allpage != 0 " @click="current++ && goto(current++)">
- <a href="#">下一页</a>
- </li>
- </ul>
- </script>
- <div id="app">
- <table border="1">
- <tr>
- <th>ID</th>
- <th>书名</th>
- <th>作者</th>
- <th>价格</th>
- </tr>
- <tr v-for="books in book">
- <td>{{books.id}}</td>
- <td>{{books.name}}</td>
- <td>{{books.author}}</td>
- <td>{{books.price}}</td>
- </tr>
- </table>
- <page></page>
- </div>
- <script>
- Vue.component("page", {
- template: "#page",
- data: function() {
- return {
- current: 1,
- showItem: 5,
- allpage: 2
- }
- },
- computed: {
- pages: function() {
- var pag = [];
- if(this.current < this.showItem) { //如果当前的激活的项 小于要显示的条数
- //总页数和要显示的条数那个大就显示多少条
- var i = Math.min(this.showItem, this.allpage);
- while(i) {
- pag.unshift(i--);
- }
- } else { //当前页数大于显示页数了
- var middle = this.current - Math.floor(this.showItem / 2), //从哪里开始
- i = this.showItem;
- if(middle > (this.allpage - this.showItem)) {
- middle = (this.allpage - this.showItem) + 1
- }
- while(i--) {
- pag.push(middle++);
- }
- }
- return pag
- }
- },
- methods: {
- goto: function(index) {
- if(index == this.current) return;
- this.current = index;
- //这里可以发送ajax请求
- console.log(index);
- $.ajax({
- type: "get",
- url: '' + index + '.json',
- dataType: "json",
- success: function(data) {
- vm.book = data.books;
- console.log(vm.book)
- }
- });
- }
- },
- mounted: function() {
- var index = 1;
- $.ajax({
- type: "get",
- url: '' + index + '.json',
- dataType: "json",
- success: function(data) {
- vm.book = data.books;
- console.log(vm.book)
- }
- });
- }
- })
- var vm = new Vue({
- el: '#app',
- data: {
- book: ''
- }
- })
- </script>
- </body>
- </html>
vue.js-列表分页的更多相关文章
- html+vue.js 实现分页可兼容IE
当功能比较简单,在单一html中使用vue.js分页展示数据,并未安装脚手架,或使用相关UI框架,此时需要手写一个分页器,不失为最合理最便捷的解决方案, 先看一下实现效果: 上代码: 1.简单搞一搞 ...
- Vue.js实现分页
效果图 代码 <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/1999/ ...
- js列表分页
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 用vue实现列表分页和按钮操作
为中华之崛起而读书 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- vue.js 列表追加项写法
<ul id="app"> <template v-for="site in sites"> <li>{{ site.nam ...
- Vue.js的列表数据的同步更新方法
这次给大家带来Vue.js的列表数据的同步更新方法,Vue.js列表数据同步更新方法的注意事项有哪些,下面就是实战案例,一起来看一下. 数组的 push(),pop(),shift(),unshift ...
- Vue.js报错Failed to resolve filter问题原因
Vue.js报错Failed to resolve filter问题原因 金刚 vue Vue.js js javascript 之前使用vue.js写分页功能时,写了一个过滤器,发现一个比较奇怪的错 ...
- Vue.js 开发实践:实现精巧的无限加载与分页功能
本篇文章是一篇Vue.js的教程,目标在于用一种常见的业务场景--分页/无限加载,帮助读者更好的理解Vue.js中的一些设计思想.与许多Todo List类的入门教程相比,更全面的展示使用Vue.js ...
- 基于Vue.js的表格分页组件
有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更一篇文章,分享一个自己编写的一个Vue的小组件,名叫BootPage. 不了解Vue.js的童鞋 ...
- 关于vue.js中列表渲染练习
html: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8 ...
随机推荐
- (2.14)Mysql之SQL基础——游标
(2.14)Mysql之SQL基础——游标 关键词:Mysql游标 -- (1)定义游标 declare cur_name cursor for select * from table_name wh ...
- 第一个Shader程序
fx文件: float4x4 matWorld; float Time=1.0f; struct VS_OUTPUT { float4 Pos :POSITION; float4 Color :COL ...
- [css]单/多行居中&字体设置
行高和字号 行高 CSS中,所有的行,都有行高.盒模型的padding,绝对不是直接作用在文字上的,而是作用在"行"上的. line-height: 40px; 文字,是在自己的行 ...
- scRNA-seq测序的两种技术[转载]
转自:http://www.ebiotrade.com/newsf/2017-9/201795172237350.htm 1.综述 哈佛大学的两个团队将微流体技术引入单细胞RNA-Seq方法中,分别开 ...
- JS获取客户端系统当前时区
<script> function getClientTimezone(){ var oDate = new Date(); var nTimezone = -oDate.getTimez ...
- Django的FBV和CB
Django的FBV和CBV FBV FBV(function base views) 就是在视图里使用函数处理请求. 在之前django的学习中,我们一直使用的是这种方式,所以不再赘述. CBV C ...
- Ubuntu安装 Spark2.3.0 报错原因及解决
Ubuntu 安装Spark出现的问题及解决 最近在搭建Hadoop集群环境和Spark集群环境,出现的问题可能不太复杂,纯粹记录安装步骤和问题解决办法.集群环境使用的是(2台)阿里云主机,操作系统是 ...
- 结合grabcut和inpaint,实现人像去除
在OpenCV提供更多函数中,grabcut能够实现抠图,inpaint能够实现修补.那么把两者结合起来,就能够实现简单的“人像去除”功能,也就是框选一个人后,使用周围的景象对人像进行修补.虽然效果比 ...
- 20145307陈俊达《网络对抗》Exp4 恶意代码分析
20145307陈俊达<网络对抗>Exp4 恶意代码分析 基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...
- 【前端】特效-Javascript实现购物页面图片放大效果
实现效果 实现代码: <!DOCTYPE html> <html> <head> <title>购物图片放大</title> <met ...