VueJs组件---分页

Posted LYearn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VueJs组件---分页相关的知识,希望对你有一定的参考价值。

首先,清楚需求,当然这里的需求很简单很明显,就是一个分页器。

vuejs中实现分页的点:

    1.与父组件数据交互

    2.分页默认做多显示多少,超出部分怎么处理

    3.渲染更新的数据,具体使用methods、或者使用computed



总体思路:

    页码由数组控制,数组由数据控制;



第一点:与父组件数据交互

    数据交互主要是:

    1.从父组件获取总页码

    2.告诉父组件当前页码

具体实现:

    父组件中引入子组件(import进来--在components中注册--在页面中使用了)


父组件中的使用如下图:

VueJs组件---分页

说明:

    totalPager:绑定的属性

    pageNum:暂时在父组件data定义的总页码

    @currentPager:监听子组件中的currentPager

    getCurrentPager:父组件中执行的方法,比如发送异步请求


子组件中结构部分:

    1.span中自动生成的页码遍历一个pagerArr,这个数组在computed中定义,主要功能就是生成页面中的页码。

VueJs组件---分页


子组件中的js部分:

说明:

    1.props中接收上面绑定的totalPager属性,在子组件中使用这个totalPager的话,可以直接使用this.totalPager进行运算或者逻辑判断

    2.preClipped:控制前部分溢出省略显示状态

    3.nextClipped:控制后部分溢出省略显示状态

    4.currentPager:默认当前页码是0


methods中定义的方法:

    pageto:跳转到哪个index的页码

    prePager:每次执行,跳前一页,对应的当前页码减一

    nextPager:每次执行,跳到后一页,对应的当前页码加一

VueJs组件---分页


这里使用了computed方法进行数组的更新,最开始使用watch进行监听currentPager,但是由于watch观察这模式并不推荐,就改成了computed计算属性。计算属性中的pageArr就是那个控制页面的数组,这个pageArr数组中的数据则有left和right中间的差值控制;这里出现的5,表示当前页面中只最大默认显示5个页码。



-------至此分页结束------


之前使用watch的时候,也写了相应的逻辑代码;

这里的代码在不停的更新数组,最后在push 的时候每次都将值push进去,这里没有完善,需要在push之前对当前这个值进行判断,是否超过了限制。

即使进行了判断,是用watch也不是一个值得推荐的方法,如果想要在这个基础上进行更改,可以考虑的方法是:

    将watch中的这个currentPager写一个方法在methods中进行定义,在每次执行到需要更新数组的时候,就调用这个方法,当然不要忘了在方法前面加上this。(*^__^*) 


---------end---------

以上是关于VueJs组件---分页的主要内容,如果未能解决你的问题,请参考以下文章

单页分页问题中的多个角度材料表

梦内容页分页标题提取

一个视图中的 CI 多页分页,

VueJs组件---分页

以多页分页打印所有数据

CakePHP 2中带有分页分页类的大小为f数组的问题