用Vue2.0实现简单的分页及跳转

用Vue2.0实现简单的分页及跳转

2018年07月26日 20:29:51 Freya_yyy 阅读数 3369

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Freya_yyy/article/details/81227016

用Vue2.0实现一个数据的分页及页数的跳转,代码如下:

  • 数据绑定:{{...}}        <a v-on:click="btnClick(item)">{{item}}</a>
  • 事件绑定:v-on        <a v-on:click="cur--,pageClick()">上一页</a>
  • 判断:v-if                 <li v-if="cur==1"><a class="banclick">上一页</a></li>
  • 循环:v-for              <li v-for="item in indexs" v-bind:class="{‘active‘:cur==item}"></li>
  • 修改样式:v-bind绑定class属性        <li v-for="item in indexs" v-bind:class="{‘active‘:cur==item}"></li>

HTML代码如下:

  1. <!DOCTYPE html>

  2.  

    <html>

  3.  

    <head>

  4.  

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  5.  

    <title>分页</title>

  6.  

    <style>

  7.  

    *{margin: 0;padding: 0;}

  8.  

    #page-break{margin-top: 20px;margin-left: 20px;}

  9.  

    #page-break li{list-style: none;}

  10.  

    #page-break a{border: 1px solid #ddd; text-decoration: none;float: left;padding: 6px 12px;color: #337ab7;cursor: pointer}

  11.  

    #page-break a:hover{background-color: #eee;}

  12.  

    #page-break a .banclick{cursor: not-allowed;}

  13.  

    #page-break .active a{color: #fff;cursor: default;background-color: #337ab7;border-color: #337ab7;}

  14.  

    #page-break i{font-style: normal;color: #d44950;margin: 0px 4px;font-size: 12px;}

  15.  

    #page-break .jumpbox .jumppage {border: 1px solid #ddd; margin-left: 40px; height: 33px; width: 40px; float: left;}

  16.  

    #page-break .jumpbox .jumpbtn {cursor: pointer; margin-left: 10px;}

  17.  

    #page-break .jumpbox .jumpbtn:active {color: #337ab7;}

  18.  

    </style>

  19.  

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

  20.  

    </head>

  21.  

    <body>

  22.  

    <div id="page-break">

  23.  

    <ul>

  24.  

    <li v-if="cur>1">

  25.  

    <a v-on:click="cur--,pageClick()">上一页</a>

  26.  

    </li>

  27.  

    <li v-if="cur==1">

  28.  

    <a class="banclick">上一页</a>

  29.  

    </li>

  30.  

    <li v-for="item in indexs" v-bind:class="{‘active‘:cur==item}">

  31.  

    <a v-on:click="btnClick(item), pageClick()">{{item}}</a>

  32.  

    </li>

  33.  

    <li v-if="cur!=all">

  34.  

    <a v-on:click="cur++,pageClick()">下一页</a>

  35.  

    </li>

  36.  

    <li v-if="cur==all">

  37.  

    <a class="banclick">下一页</a>

  38.  

    </li>

  39.  

    <li><a>共<i>{{all}}</i>页</a></li>

  40.  

    <div class="jumpbox">

  41.  

    <input type="number" class="jumppage" />

  42.  

    <a class="jumpbtn" v-on:click="pageSkip()">跳转</a>

  43.  

    </div>

  44.  

    </ul>

  45.  

    </div>

  46.  

    </body>

  47.  

    </html>

  48.  

js代码如下:

  1. new Vue({

  2.  

    el: ‘#page-break‘,

  3.  

    data: {

  4.  

    cur: 1,

  5.  

    all: 20

  6.  

    },

  7.  

    watch: {

  8.  

    cur: function(newValue, oldValue){

  9.  

    console.log(arguments);

  10.  

    }

  11.  

    },

  12.  

    methods: {

  13.  

    btnClick(num){

  14.  

    if(num!=this.cur){

  15.  

    this.cur=num;

  16.  

    }

  17.  

    },

  18.  

    pageClick(){

  19.  

    console.log(‘现在是‘+this.cur+‘页‘)

  20.  

    },

  21.  

    pageSkip(){

  22.  

    var maxPage = this.all;

  23.  

    var skipPage = Number(document.getElementsByClassName("jumppage")[0].value);

  24.  

    console.log(typeof skipPage);

  25.  

    if(!skipPage){

  26.  

    alert("请输入跳转页码");

  27.  

    return;

  28.  

    }else if(skipPage<1 || skipPage>maxPage){

  29.  

    alert("您输入的页码超过页数范围了!");

  30.  

    return;

  31.  

    }else{

  32.  

    //this.cur=skipPage;

  33.  

    this.btnClick(skipPage);

  34.  

    this.pageClick();

  35.  

    }

  36.  

    }

  37.  

    },

  38.  

    computed: {

  39.  

    indexs(){

  40.  

    var left = 1;

  41.  

    var right = this.all;

  42.  

    var arr = [];

  43.  

    if(this.all>=7){

  44.  

    if(this.cur>4 && this.cur<this.all-3){

  45.  

    left = this.cur-3;

  46.  

    right = this.cur+3;

  47.  

    }else if(this.cur<=4){

  48.  

    left=1;

  49.  

    right=7;

  50.  

    }else{

  51.  

    left=this.all-6;

  52.  

    right=this.all;

  53.  

    }

  54.  

    }

  55.  

    while(left<=right){

  56.  

    arr.push(left);

  57.  

    left++;

  58.  

    }

  59.  

    return arr;

  60.  

    }

  61.  

    }

  62.  

    })

分页显示如下:

原文地址:https://www.cnblogs.com/developer-ios/p/11326399.html

时间: 2024-10-08 22:09:14

用Vue2.0实现简单的分页及跳转的相关文章

vue2.0+element-ui(01简单点的单页面)

前言: 在<Vue.js权威指南>刚出版的时候,自己就作为一名前端粉捧了一把场,可是真是应了那句"出来混,总是要还的!"这句话了,那时候信心满满的买来书想要认真研究的时候,却还是把它搁浅了.直到最近工作上要使用它来做一个后台管理系统,才不得不逼迫自己再次重新拿起书,看起文档,努力研究这个异常流行的Vue.js. 过程: 简单页面呈现如下   (图片貌似有点模糊,基本实现就是简单的增删改查): 1.使用到的技术: vue2.0:https://cn.vuejs.org/v2/

一款基于vue2.0的分页组件---写在页面内

通过 Vue2.0 实现的分页 可自由设置分页显示的多少.上一页.下一页.省略号等,也可直接输入跳转到的页码进行跳转,分页的样式可自由调整 // 1.页面的 head 部分,需要设计好页面的样式 1 .page { 2 font-weight: 900; 3 height: 40px; 4 text-align: center; 5 color: #888; 6 margin: 20px auto 0; 7 background: #f2f2f2; 8 } 9 10 .pagelist { 11

从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十三║Vue实战:Vuex 其实很简单

系列教程一目录:.netcore+vue 前后端分离 系列教程二目录:DDD领域驱动设计 系列教程三目录:Nuxt.js TiBug系统 系列教程四目录:VueAdmin 后台管理系统 系列教程五目录:IdentityServer4 授权服务器 本文梯子 前言 零.今天要完成实战1中的红色部分 一.常见的 Vue 表单提交是如何设计的? 1.表单.按钮等在一个组件内 2.按钮在父组件.表单在单独的子组件内 二.通过 $emit 修改父组件数据 1.在原来代码里 About.vue 修改成 For

Vue2.0 + Element-UI + WebAPI实践:简易个人记账系统

最近正在学习Vue2.0相关知识,正好近期饿了么桌面端组件Element-UI发布,便动手做了一款简易个人记账系统,以达到实践及巩固目的. 1.开发环境 Win10 + VS2015 + Sqlserver2008R2 + WebAPI + Dapper + Vue2.0 + Element-UI 2.项目解决方案概览 简单介绍下,Account是WebAPI项目,承载前端请求:Account.BLL.Account.DAL.Account.Entity不废话:Account.Common是对D

Vue2.0+Node.js+MongoDB 全栈打造商城系统

第1章 课程介绍简单回顾前端近几年的框架模式,了解不同时期下的框架特点.其次介绍Vue框架的背景和核心思想,以及同其它MV*框架的对比.1-1 课程-导学1-2 前端框架回顾1-3 vue概况以及核心思想1-4 vue框架优缺点对比 第2章 Vue基础从0到1,如何搭建一个简单的Vue项目:本章节主要讲解Node和Npm环境的搭建,其次介绍vue-cli脚手架的使用,以及通过详细拆解介绍脚手架生成的配置文件信息,最后给大家介绍了Vue涵盖的基础语法.2-1 nodejs和npm的安装和环境搭建2

Vue.js系列之项目搭建(vue2.0 + vue-cli + webpack )

1.安装node node.js环境(npm包管理器) cnpm npm的淘宝镜像 从node.js官网下载并安装node,安装过程很简单,一路"下一步"就可以了(傻瓜式安装).安装完成之后,打开命令行工具,输入 node -v,如果出现相应的版本号,则说明安装成功. npm包管理器,是集成在node中的,所以,直接输入 npm -v就会显示出npm的版本信息. 2.安装cnpm 在命令行中输入 npm install -g cnpm --registry=http://registr

使用EntityFrameWork 5.0增删查改(&amp;分页,连表)

   EntityFrameWork 5.0的简单使用 概要: 使用EF增加,删除,编辑以及查询,分页,连表等等 正文: 在项目中添加一下Entiy Data Model: xx.context.tt下的xx.context.cs: 这里的OrderSystemEntities(OrderSystem是数据库名)就是EF的上下文容器对象,继承至DbContext 在OrderSystemEntities中调用DbContext的构造函数DbContext(string connectionNam

vue2.0 transition

vue2.0 transition -- demo实践填坑 前言 vue1.0版本和2.0版本的过渡系统改变还是蛮彻底的,具体请自行详看文档介绍:https://vuefe.cn/v2/guide/migration.html#过渡.在使用2.0版本做过渡效果的时候,虽然比1.0版本强大很多,但是实践过程中还是踩了一些不应该踩但是还是踩了的坑.虽然官网文档已经很详细地介绍了各种应用场景,但是这里还是通过几个小demo案例来感受下vue2.0 transition 带来的便利吧! 实践 这里将通过

vue2.0实践的一些细节

最近用vue2.0做了个活动.做完了回头发现,好像并没有太多的技术难点,而自己好像又做了比较久...只能说效率有待提升啊...简单总结了一些比较细节的点. 1.对于一些已知肯定会有数据的模块,先用一个有高度的元素占位,不然当数据加载好渲染的时候会出现跳动的感觉.可以这样写: 1 2 3 4 5 <div class="yhq_inner">  //占位元素 <template v-if="true">  //加template则页面加载时就不