今天项目需要一份根据本地数据的筛选分页功能,好吧,本来以为很简单,网上搜了搜全是ajax获取的数据,这不符合要求啊,修改起来太费力气,还不如我自己去写,不多说直接上代码

效果图:

项目需要:点击左侧进行数据筛选,实现自动分页,自动生成页数,点击自动跳转

项目代码:js代码

var subList=new Vue({    el:'#main',    data:{        // subcontentData为本地数据        subContents:subcontentData,        // 页面需要展现的数据        yemiandata:[],        // 页面展现条数        datanum:12,        // 开始椰树        startnum:0,        // 结束椰树        endnum:1,        // 一共多少页        btnnum:0,        // 生成切换页面的按钮用        listnum:[],        // input跳转        jemp:1,

    },    methods:{        filters(num){            this.subContents=subcontentData;            // 需要重置防止翻页导致startnum和endnum不一致            this.startnum=0;            this.endnum=1;            // 这里是判断筛选按钮            switch(num){

                case 0: $('#sublist li').css({                    background:'#f2f2f2'                }).eq(0).css({                    background:'#dbe9f0'                });                    this.fenye();                    break;                case 1:

                    $('#sublist li').css({                        background:'#f2f2f2'                    }).eq(1).css({                        background:'#dbe9f0'                    });                    this.subContents=this.subContents.filter(num=>{

                        return String(num['department']).includes('行政');                    });                    this.fenye();                    break;                case 2:                    $('#sublist li').css({                        background:'#f2f2f2'                    }).eq(2).css({                        background:'#dbe9f0'                    });                    this.subContents=this.subContents.filter(num=>{

                        return String(num['department']).includes('报关');                    });                    this.fenye();                    break;                case 3:                    $('#sublist li').css({                        background:'#f2f2f2'                    }).eq(3).css({                        background:'#dbe9f0'                    });                    this.subContents=this.subContents.filter(num=>{

                        return String(num['department']).includes('组装');                    });                    this.fenye();                    break;                case 4:                    $('#sublist li').css({                        background:'#f2f2f2'                    }).eq(4).css({                        background:'#dbe9f0'                    });                    this.subContents=this.subContents.filter(num=>{

                        return String(num['department']).includes('电子');                    });                    this.fenye();                    break;                case 5:                    $('#sublist li').css({                        background:'#f2f2f2'                    }).eq(5).css({                        background:'#dbe9f0'                    });                    this.subContents=this.subContents.filter(num=>{

                        return String(num['department']).includes('工艺');                    });                    this.fenye();                    break;                case 6:                    $('#sublist li').css({                        background:'#f2f2f2'                    }).eq(6).css({                        background:'#dbe9f0'                    });                    this.subContents=this.subContents.filter(num=>{

                        return String(num['department']).includes('财务');                    });                    this.fenye();                    break;                case 7:                    $('#sublist li').css({                        background:'#f2f2f2'                    }).eq(7).css({                        background:'#dbe9f0'                    });                    this.subContents=this.subContents.filter(num=>{

                        return String(num['department']).includes('制造');                    });                    this.fenye();                    break;                case 8:                    $('#sublist li').css({                        background:'#f2f2f2'                    }).eq(8).css({                        background:'#dbe9f0'                    });

                    this.subContents=this.subContents.filter(num=>{

                        return String(num['department']).includes('销售');                    });

                    this.fenye();                    break;            }        },        // 分野函数        fenye(){

            this.yemiandata=this.subContents.slice(this.startnum*this.datanum,this.endnum*this.datanum);            this.btnnum=Math.ceil(this.subContents.length/this.datanum);            this.listnum=[];            for(i=0;i<this.btnnum;i++){

                this.listnum[i]=i+1;            }            btnwidth();

        },        // 下一页函数        nextlist(){            if(this.endnum>= this.btnnum){                alert('最后一页了');

                return false;            }            this.endnum++;            this.startnum++;

        },        // 上一页函数        prevlist(){            if(this.startnum<= 0){                alert('第一页了');

                return false;            }            this.endnum--;            this.startnum--;

        },        // 按钮跳转到制定的页面        jemppage(list){            this.startnum=list-1;            this.endnum=list;        },        // input跳抓        goindex(){            console.log(parseInt(this.jemp));            if(parseInt(this.jemp)>this.btnnum){alert('请输入合法参数');return}            this.endnum=this.jemp;            this.startnum=this.jemp-1;        }

    },    // 使用一个监听。可以减少很多代码    watch:{        startnum(n,o){

            this.yemiandata=this.subContents.slice(n*this.datanum,(parseInt(n)+1)*this.datanum);

        }    }});

    subList.filters(0);    subList.fenye();    // 封装一下底部btn方法  底部自动大小    function btnwidth(){        $('#fbtn').css({            width:(subList.listnum.length+2)*40+293+'px',            marginLeft:-((subList.listnum.length+2)*40+293)/2+'px'        })    }

    btnwidth();

下面是html节点代码:

<div class="main_content">            <div class="table2_nav">                <ul id="sublist">                    <li @click="filters(0)"><div class="blockcenter">部门分类(部门8/8)</div></li>                    <li @click="filters(1)"><div class="blockcenter">行政部</div></li>                    <li @click="filters(2)"><div class="blockcenter">报关科</div></li>                    <li @click="filters(3)"><div class="blockcenter">组装部</div></li>                    <li @click="filters(4)"><div class="blockcenter">电子部</div></li>                    <li @click="filters(5)"><div class="blockcenter">工艺部</div></li>                    <li @click="filters(6)"><div class="blockcenter">财务部</div></li>                    <li @click="filters(7)"><div class="blockcenter">制造部</div></li>                    <li @click="filters(8)"><div class="blockcenter">销售部</div></li>                </ul>            </div>            <div class="table2_content">                <div class="col-title bg-fff clearfix">                    <h5 class="fl">告警策略报表统计</h5>                    <div class="btn fl">                        主机名称&nbsp;<span class="caret"></span>                        <div class="btn_down">                            <ul>                                <li>下啦</li>                                <li>下啦2</li>                            </ul>                        </div>

                    </div>                    <div class="fl btn2">                        添加                    </div>                </div>

                <table width="1410px" class="table" id="tablelist tab">                    <tr>                        <th>工号</th>                        <th>姓名</th>                        <th>部门名称</th>                        <th>性别</th>                        <th>籍贯</th>                        <th>员工状态</th>                        <th>入职时间</th>                        <th>离职时间</th>                        <th>离职类别</th>

                    </tr>                    <tr v-for="subContent in yemiandata">                        <td>{{subContent.num}}</td>                        <td>{{subContent.name}}</td>                        <td>{{subContent.department}}</td>                        <td>{{subContent.sex}}</td>                        <td>{{subContent.addres}}</td>                        <td>{{subContent.staic}}</td>                        <td>{{subContent.jointime}}</td>                        <td>{{subContent.leavetime}}</td>                        <td>{{subContent.type}}</td>

                    </tr>

                </table>

                <div class="vuetab clearfix">                    <ul class="fbtn clearfix" id="fbtn">                        <li @click="prevlist()">&lt;</li>                        <!--<li @click="jemppage($event)">1</li>-->                        <li v-for="list in listnum" @click="jemppage(list)">{{list}}</li>                        <li @click="nextlist()">&gt;</li>                        <div id="pages">共{{btnnum}}页</div>                        <div id="gotoindex">到第 <input type="text" :value="jemp" v-model="jemp" id="inputnum"> 页</div>                        <button id="gobtn" @click="goindex()">确定</button>                    </ul>

                </div>            </div>
</div>
说下思路:首先我们需要本地一组数据,通过vue添加到页面中,第二步我们需要做好分页,那么可以写一个函数对吧,所以有了下面的fenye(命名不规范,大虾勿怪)函数,所谓分页无非就是把一个大数据分成每个小页面去展现,所以我写了一个专门用来展现的数组,也就是yemiandata(同样不规范,我说因为我做的网站内容太多了,所以命名已经用尽了,你们信么),之后我们需要得到多少个页面,并变成一个btn按钮,为了省事,我增加了一个watch:用来监听startnum(开始页数)他变化的话就改变展现。第三步:分页的话肯定要有上一页下一页,这个就简单多了下一页就是startnum和endnum都增加一,上一页反之。第四步:也要有点击页数的按钮进行跳转,这个也不难,就是让按钮点下去跳转到指定页,但是去写函数么?不现实对吧,所以我用了一个数组listnum存放多少个按钮,这里解释下为什么不用变量用数组,因为vue中v-for不支持变量循环,所以我改用数组,方便前面html生成节点。第五步说了需要做筛选,筛选的话就是吧需要展现的素组变成包含制定关键词的,filters函数,利用js的filter和includes进行筛选,做完看看,失败了,出现了很多undefind,为什么?仔细看看没有重置数组,导致第二次筛选是在第一次筛选完的基础筛选。那就重置一下咯,再看看,搞定!大体思路就是这样,有不明白的小伙伴可以添加我qq:421217189.
        最后因为是自己公司的项目所以有部分代码是我公司项目需要,例如下啦框,css代码就不进行分享了。小伙伴们自行发挥。有任何不明白的可以讨论

转载于:https://www.cnblogs.com/jinzhenzong/p/7837234.html

vuejs实现本地数据的筛选分页相关推荐

  1. 千牛包表包下载_带有服务器端处理和VueJS组件的数据表包

    千牛包表包下载 Vue数据表 (Vue Data Table) Data Table package with server-side processing and VueJS components. ...

  2. cesium 3dtiles 加载本地数据_Meteva笔记:加载本地观测数据

    Meteva 是由 nmc 开源的全流程检验程序库,提供了常用的各种气象预报检验评估的算法函数,气象检验分析的图片和表格型产品的制作函数,以及检验评估系统示例. 本文介绍如何将 NWPC 生成的站点观 ...

  3. mysql 分页_百万数据下mysql分页问题

    点击蓝字关注我们!每天获取最新的编程小知识! 源 / php中文网      源 / www.php.cn 百万数据下mysql分页问题 (查看原文请点击本文末尾左下角: 在开发过程中我们经常会使用分 ...

  4. 一次性加载数据,前端分页

    在项目中,前端显示数据的时候,很多地方需要用到分页,通常有两种方式: 一:点击页码的时候,ajax请求后台服务器得到每一页数据,然后在前台进行显示 二:在页面加载,或者其他事件中,一次性将数据加载至前 ...

  5. Vue.js读取本地json文件并分页显示

    Vue.js读取本地json文件并分页显示 1.功能实现 通过axios异步加载技术读取本地的json文件内容,并通过vue.js处理数据在h5页面分页显示(这里以3行数据分页) 2.student. ...

  6. 联邦学习【分布式机器学习技术】【①各客户端从服务器下载全局模型;②各客户端训练本地数据得到本地模型;③各客户端上传本地模型到中心服务器;④中心服务器接收各方数据后进行加权聚合操作,得全局模型】

    随着计算机算力的提升,机器学习作为海量数据的分析处理技术,已经广泛服务于人类社会. 然而,机器学习技术的发展过程中面临两大挑战: 一是数据安全难以得到保障,隐私数据泄露问题亟待解决: 二是网络安全隔离 ...

  7. java分页抓取数据_网页分页数据抓取的几种方式

    相信所有个人网站的站长都有抓取别人数据的经历吧,目前抓取别人网站数据的方式无非两种方式: 一.使用第三方工具,其中最著名的是火车头采集器,在此不做介绍. 二.自己写程序抓取,这种方式要求站长自己写程序 ...

  8. 多样化实现Windows phone 7本地数据访问5——深入Rapid Repository

    上一篇多样化实现Windows Phone 7本地数据访问<4>--Rapid Repository  中初步的介绍Repid Repository作为Windows phone 7数据库 ...

  9. SQLServer怎样把本地数据导入到远程服务器上(转载)

    平常用到mssql时间比较少,总是过一段时间就忘记应该怎么操作了.当要做mssq把本地数据导入到远程服务器的时候,就去网上搜索很久都没有图解的,所以今天自己收集一下免得下次又到处去找.希望对自己,同时 ...

最新文章

  1. 自动驾驶架构与实现路径
  2. 拨号连接或 ××× 连接的错误代码列表
  3. Yann LeCun力挺前AAAI主席,批判深度学习的Marcus遭怒怼
  4. python做成绩表_自学Python笔记:用Python做成绩分析(2)
  5. NOIP2018没有什么新闻
  6. NFS服务器的安装与配置
  7. VS2019正确创建C++步骤以及扩展插件美化你的VS2019的IDE开发环境
  8. .NET程序加壳的基本原理和方式浅析
  9. 工作222:title写活
  10. 神马搜索聚焦大数据营销 汇川广告平台 快、准、省
  11. scala基础之提取器extractor
  12. win10中通过docker安装sqlserver服务器的操作说明
  13. (学习笔记)laravel 中间件
  14. 汉字的 unicode 编码表
  15. JAVA多线程面试题及答案
  16. matlab插值函数
  17. 自制H5页面工具盘点 宣传/相册/邀请函
  18. excel如何把多张表合并成一个表_如何快速把多个excel表合并成一个excel表?
  19. 主成分分析结果成分不显著_主成分分析结果
  20. 电脑版微信定时发送消息

热门文章

  1. 全能Android HOOK框架 JNI NATIVE JAVA ART DALVIK
  2. Unrecognized Hadoop major version number: 3.0.0-cdh6.3.2
  3. 简述python的特性_python的一些语言特性(一)
  4. linux提升网络实时性,通过调整Linux内核参数提升网络性能
  5. ECCV 2020《TRRNet: Tiered Relation Reasoning for Compositional Visual Question Answering》论文笔记
  6. 最优乘车pascal程序
  7. BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析、启发式合并、线段树合并、主席树)...
  8. 登录页面html代码_【网络自动化平台开发】—— 登录组件
  9. windows cmd post请求_cmd命令集合
  10. python动态更新窗口上的图片_基于Python实现matplotlib中动态更新图片(交互式绘图)...