00:00
咱们这个分页啊,其实还差哪呢,就是差这个页码的一个显示啊,就差这个页码的显示了,那么这个页码的显示啊,咱们稍微说明一下。哎,稍微说明一下,大家注意看需求是什么呢?咱们先说需求。要求。显示,哎呀,五个连续的页码,记住啊,要显示五个连续的页码,而且当前页码在中间,当前页码在中间,那么除了当前页码之外,每个页码都可以点击跳到指定页。啊,都可以点击跳到指定页,这就是页码的一个常见的一个诉求。
01:00
啊诉求,那么这个页码怎么输出呢?它是有一定的算法的。啊,它是有一定的算法的,我们给他分析一下哈,注意看如果。哎,如果什么东西呢,总页码。小于等于五的情况。啊,大家注意,如果是这种情况。那怎么办?我们就假想一下,如果总的页码小于等于五,那无非就是什么情况呢?都是一啊一。两页,三页四页。五页那就是一呗,这个呢一二,下面这个呢123对吧,下面这个呢123。是这个呢。
02:01
12345就完了嘛,对吧?哎,如果总页码一共小于五的话。那么它就属于这么几种情况,哎,那这个时候大家注意看一下页码的范围是什么东西呢?诶一到。总页码大家想想哈,是不是这个效果啊,如果你的总页码都不到五页。那么这个时候的页码,也就是这个位置输出的页码就什么,就是一到总页码你看到吗?一共一页啊,就一到一呗,一共两页就一到二啊用五页就一到五,你看着吗。好,这是第一种情况,那第二种情况。总页码大于五。的情况啊,那我们假设一共十页,我们就假设一共十页,那么大家注意在这种情况之下呀,它还分三种情况。
03:07
它还分三种情况呢,啊,那么小情况一就比如说。当前页码为前面三个。当前页码为前面三个,也就是。123的情况好,哎,那这个时候大家来看一下啊,如果是123的情况怎么样呢?就是12345就这样子,当前页码是一。是吧,那如果你是第二页12345。那写满师啊。如果你第三页的12345,当时页码是三。大家发现了吗?这个时候它的页码范围永远都是一。
04:04
这是固定的,这是固定的,一旦不是前面三个第四个它就变了,就23456,你看见了吗?所以我们说这不属于这一类。它不属于一种情况。啊,它不属于这种情况,好,那如果说是第二种小情况呢。当前页码为最后三个。啊,那我们就假设是八九十。八九十,那么这个时候啊,我们来看一下这个效果,那页码范围是什么,就比如说八吧。八九十六七八九十答吗?那么如果是九呢,6789。是。
05:00
如果是十呢,6789还是十,发现了吗。还是?对吧,这时候它的页码范围也是固定的,页码范围是什么?总页码减四。减四。到总页码。就这样子,总页码减四到总种页码它是固定的,嗯,就比如说如果你是一共是20页,那也一样啊,20减去四,什么是十,60 60 70 89 20,你看下它也是可用的。哎,那剩下的情况呢,小情况三是吧,那就是什么。那就是呃四啊五啊六啊七啊这些情况。好,那我们看看这些情况是什么,那就是四吧,咱们是四个就23456。
06:04
那还有呢,34567。八啊,这个应该写错了,就是34567,那如果是七呢,那就是56789,大家看见了吗?这个时候页码范围是什么。当前页码减二。到当前页码。加二就这样子,这样子就可以输出全部的这个页码了。啊,这样就可以输入全部的页码,那么我们按照这样的一个算法来实现一下,大家注意看啊,呃,我们到book manager这里面。在哪呀,页码输出啊,在哪在这个位置。我们要来输出这个页码了。
07:04
页码输出的开始,咱们确定好这个范围,免得一会写写的乱了啊,页码输出的结束,好就这样子,这里面我们说了,你得先干嘛,你得先判断一下你到底是什么情况。如果说是情况一。啊,情况一怎么办呢?来,请看啊。Truth是吧,多种情况嘛,来第一种情况温什么东西呢?哎,就这种。总页码小于等于五的信号。Request点配置。连page小于等于五嘛。是吧,小于等于五,那中间怎吗?大家注意看页码范围什么,是不是一到总页码,那其实这不就是大家看看啊,这不就是遍历输出某个数值范围吗?咱们前面讲for each的时候,其实就可以干这个事情。
08:16
有begin begin是多少啊一啊,N是多少啊?N就是它的总页码。你是多少他就打多少啊。然后这个wa呢。就是哎,来这样不就可以输出了吗?这样不就可以输出了吗?好,咱们试试看啊,先看这种情况。呃,咱们先刷新一下啊,不对,咱们现在一共是六页是吧,六页不满足这个条件啊,这样咱们每页显示四条,咱们把。呃,最后的两条给人家删了。让他20条把最后两个删了啊。
09:02
好,那就一共20条眉形,四条五页刚好走你。大家看见了吗?一到一到五就出来了。啊,一到五就出来了,那么我们还要求什么呀,注意看啊,我们要求每个页码都可以点击啊,啊每页码都可以点击是吧,除了当前页码给它加个A标签。那么点击之后跳转的地址是哪呀?还是跳给这个不上链去让他干嘛。让他去处理分页啊,只不过就是页码不同而已,页码是什么?是I呀,大家看看。我跳到第一页,跳到第二页,跳到第三页,第四页第五页没问题吧。没问题,只不过有个小问题是啥?就是你看不出来当天是第几页是吧,那最好呢,要区分开一下。区分看一下,当前页码是不可点击的,那怎么办呢?你就你就不能光这么输出啊,要判断一下呀,做两种处理啊好,咱们说如果这个I等等于。
10:18
配置点配置number啊,那这就什么,这就当前页码呗,当前页码在输出的时候,输出I就行了,输出这个I就行了,哎,那这个条件再反过来写,就是else的情况,这不是当前页码的情况。啊,不是当前页码呢,那你就给人家加。请求地址呗,这还有啥说的呀,来请看一下,走这大写页码你看了吗?这个不能点,其他都可以点。哎,都可以点好了,这就是页码输出的第一种情况。
11:00
那接着我们看一下第二种情况,就大于五的情况。啊,那个大于五呢,其实也不是特别的难,咱们怎么做呀,大家看一下哈,咱们把这个。改成二,就让他每呃每页显示两条是吧,那你20条嘛,每页显示两条不就十页,十页不就大于五。是吧,好,咱们启动一下啊。哎,那这个时候咱们把第二种情况也写了。Yeah。啊,这是这是第一种情况哈,那第二种情况。别着急啊。哎呀,这个老是跳。诶。来咱们看看哈,第二种情况,温温什么东西呢?就是你这个纸。哎,它不是小于等于五了,是大于五了是吧?哎,那我们把这个拿过来。
12:10
好。那么这个时候大家注意看一下哈,那么总的页码大于五的情况。哎,咱们说这里面怎么办,是不是还要分三种小情况呢,所以还要做一个多路的选择判断。好。咱们先看第一种情况。第一种情况什么样子,就是当前页码啊,是前面三个的情况。我们把这个拿过来。啊,把这拿过来一个去处理就好了嘛。
13:02
这假设实页咱们就去掉了哈,哎,前面三个怎么写的表达式怎么写小于等于三倍,这还有啥呀,是吧?好,这个时候页码范围固定什么一到五啊,那是不是还得输出页码,你只要把这个拿过来就行了,这不就是遍历一个范围嘛,中间输出页码嘛,你把它拿过来。就可以了。就行了啊,来咱们看看效果。嗯,比如说咱们后台管理,图书管理稍等,现在每个显示两条,看见了吗?前面三个我给你显示,哎哟,这有点多。这是不是,这不是输到十了,输到十是因为啥呀,大家请看一下哈,咱们复制过来这个N是什么,是不是到总页码,咱们是固定式什么一到五,那你就写成。我就完事了再来。走。哎,你看第一页,第二页第三页前面三个吧,一旦你练成四怎么出不来了,好,哎,这是。
14:02
第一种,小的情况。那么第二种情况来看一下哈。叫做page.page number要大于多少?来请看一下。第二种情况,后面的三个,后面的三个的这个值怎么去算呢啊。其实就是拿总页码去减三呗,你想想啊,一共是十页十减三得七,我这些是不是都。大于七。能能理解吧,好了,我们到这边来。就什么东西呢,总页码,我们找找这主页码。减三。就这就好了,减三就这种情况,咱们把这个拿过来。
15:06
好,如果是这种情况的话,大家注意它的页码范围是总页码减四到总页码,那你其实可以把这个负拿过来改改范围就完事了啊。诶,来看这个开始,开始是多少,总页码减四啊,这是总页码。减四。那结束呢,到总页码。就完了。哎,就完了,来我们看看啊,刷新一下。哎呀,啥情况啊,好了,呃,然后到末言。诶,这是啥情况啊,出啥错了,我们稍微看看哈。呃,他说score配置啊,我知道啥意思了,呃,大家看一下,咱们放到这里的时候,And没有用E表达式输出,看见吗?当无法识别这个东西。
16:00
啊,就大家一般出现错误,大家要去看一下控制台啊,看看控制台来再来。刷新一下,这不就出来了吗?是吧,最后的三个嘛,哎,一到七就不是最后三个了,你看就不行了,哎,那接着呢,咱们处理一下最后的这种情况。最后这种情况来。我们到这个地方。好,我们把这个拿过来。最后这种情况它的页码范围是多少啊,就是当前页码减二。到当前页码加啊。好了,那么我们来再看下效果,这样呢,所有的页码就都出来了,比如说首页啊,下一页下一页点点点点点是不是不都出来了,哎,就都可以用了哈,哎,你看。
17:09
这就是页码的输出,呃,页码的输出,那么这个页码的输出啊,其实大家也看见了,在这里面有一部分代码就几乎完全一样,用这个for,你看我几乎都是拷贝过来改改就完了。诶,那像这个代码,其实我们是可以稍微调整优化一下。啊,当然你不优化其实也行,也不影响啊,也不影响好吧。OK,那你你想优化了,怎么优化呢?就你可以这样子,这代码就看的比较长,你可以把这个for啊放到这边来。你想想,不管哪种情况,For each是不是都会执行一次?有什么不同?其实就是begin和end不同而已嘛,其他都完全一样的。那也就是你上面的时候不让他执行,你只需要记录一下begin和end就好了,然后到判断完了以后,告诉这个begin和end,让他来执行就行了。那怎么办?大家看啊,我在这里。
18:03
我在这里我不执行,我只负责记录就行啦。哎,那这个是叫做begin value是什么一。然后需要记录下begin和end,那end是多少呢?就是这个值。给人家拿过来,其实这个地方优不优化都可以哈,哎,也不影响啥来了,这个就可以去掉了,这样看到大码就会稍微简洁一些。大家看一下,那下面几种情况呢,没有情况都要去去去这个记录一下就完事了啊,你看我这个地方呢,也也给他记录一下。哎,这是多少啊,一到五吗?这是一,这是多少五,那这个负一就不要了。啊,那这样呢,我再拿过来,我在我放在这里,再给他记录一下这是多少,这是呃,总页码减四的begin。
19:04
到。总页码。是吧,记录下来之后呢,你把这都干掉。哎,都干掉,那最后的一个呢。拿过来。好,Begin是当前页码解啊。然后结束是当前页码加二。好了,这就可以了,来,咱们刷新一下走。是吧,这时候可以了吧,来末页你看是不是都都都一样可以用啊不影响啊不影响。诶,这有问题,它是不是一直都是六到十啊,为啥呀。
20:00
咱们这个。哦,这时候没改啊,咱们这里应该输出什么东西,输出那个记录的值begin,然后这里输出那个结束的值啊,要不然他就固定写死了,这样就可以了。刷新一下。你看啊,走走这不就可以了吗,对吧。啊,这就可以了,好,这样呢,我们的代码就相对要简洁一些,这里就只有一份这个for each啊,就for each好了,就咱们了解一下。
我来说两句