发表于: 2019-08-22 22:00:42
2 771
今天完成的事情:
1 完成分页一部分。如下,基本上昨天收获中说的五个点都实现了。
明天计划的事情:
1 完成分页
遇到的问题:
1 做分页的时候用的v-for写的,然后我设置点击事件是令当前值等于分页上分页上的那个数字,标签上设置他们相等时显示背景色。
然后我发现我点击一次循环就执行一次,不知道是什么原因
因为我点击事件并是更改了当前值,并没有重新执行循环的那个方法,所以他返回的数组也不会有变化,那也就不会再次循环。去重新看了v-for说的也只是当数组用变异方法(push等)改变的时候,或改变引用地址,会重新渲染但是跟我这也没关系。然后又想了是不是因为数组是引用类型是存储在堆中的原因,但是我这个并没有手动改变数组,所以跟这个也没有关系。最后突然看到上面的标签想到了,就只是因为我点击事件改变了当前值,而标签中有用到当前值,他改变了自然标签就要重新渲染,就会再运行循环了,之前都是自己想复杂了。
2 是背景颜色的问题,就是分页按钮123用的都是一个样式,然后都有hover改变背景色效果。但是按钮点击后背景色改变,hover效果就不需要了,不然颜色也会被改变如下
一开始想的是在点击之后去掉这个hover,去搜索了一下没发现什么好办法,因为他又没有写在标签中,不能用直接给他移除掉,后来用的土办法,就是创建两个样式,点击前有hover点击后没有hover
3 分页中点击后禁止点击的效果,一开始的解决办法是给点击的方法传参($event)当前事件,然后用target获取当前节点,给他添加属性disabled,然后每次点击后都会触发循环,其他按钮的这个属性就就会没掉。
但是后来发现这样是有问题的,比如到如下这几页的时候,如果67等点过一次了,那就不能再次点击了,但之前不是说了点击事件触发循环就刷新了,那怎么会不能点击。这里我测试了一下,确实循环重新执行了,但我标签上给:key绑定的值是 index in items 中的index,然后下面这样的6的key就是6 ,7的key就是7,然后点击后加上属性disablede,那么下次循环的时候key一样,直接就复用了之前的那个标签,所以disabled还在。自然也就不能点
之后就想了让他的key每次都不同,比如说让他自增,但是直接自增的话就改变了按钮的数字了。加上data中的变量自增的话,那么就会报警告可能触发无限循环···,原因之前也说了。然后在点击的时候加上的变量的自增,这样会造成重新循环的下一个不能点击。然后就又想给key绑定一个函数如下
这样是没什么问题了。这样除了那个红色波浪线说的语法错误还有一个问题就是现在key每次都不一样了,然后按钮你变成能点击两次了,还是用上面那个按钮的图,比如你点击6之后,那触发标签重新渲染,这时因为key不一样,所以不是复用之前的key,那么同样的disabled也就没了,再次点击因为当前值一样,所以不会触发标签的重新渲染,disabled属性加了上去。这样就造成了点击两次的效果。
最后灵光一闪去查了下动态绑定disabled的方法,发现他竟然是个布尔值,可以通过布尔值来设置是否可用,我之前看的时候一直都以为他是个不需要值的属性。所以就一直没想到这个,感觉思维有点固化。之后就简单了。直接判断当前值和按钮值一样的话就true,不一样就false
收获:
1 以上,基本上了解了如何写一个分页。其实只有把不同的情况展示的效果总结出来,其他的就都很好办
评论