<template> <div> <!-- 分页组件 --> <Paging :name="name" @change="onPageChange" :page-size="size" :total="total" layout="jumper,total" :current-page="curPage" /> </div> </template>
<!-- Paging属性 page-size 每页显示条目个数 total 总条目数 current-page 当前页数 layout 布局 默认不显示 jumper,total Paging事件 change 当前页改变时触发 --> <script> import Paging from '@/components/Paging'; export default { name: 'Index', components:{ Paging }, data () { return { msg: 'hello', name:'阿健a', size:10, total:201, curPage:1 } }, methods:{ onPageChange:function(page){ this.curPage = page.curPage; } } } </script>
遇到的问题
1、在子组件中修改currentPage时报错
Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders
在使用组件时,传入的prop,被组件内部又做了一次修改
避免直接修改prop,因为当父组件重新呈现时,值将被覆盖
changePage:function(idx){ if(idx!=this.currentPage && idx>0 && idx<=this.totalPage){ this.currentPage = idx; // 触发父组件事件 pageChange会转换成小写pagechange this.$emit('change'); } }
解决
修改代码,通过emit传递curPage给父组件,让父组件修改
changePage:function(idx){ if(idx!=this.currentPage && idx>0 && idx<=this.totalPage){ // 触发父组件事件 pageChange会转换成小写pagechange this.$emit('change',{curPage:idx}); } }
父组件监听事件更新curPage
onPageChange:function(page){ this.curPage = page.curPage; }
最后
以上就是分页组件的整个实现过程 ,其实只要搞清楚父子组件是如何传参的,以及我们实现一个组件需要暴露哪些参数给父组件,整个实现过程还是不难的
总结
以上所述是小编给大家介绍的基于vue2.0实现仿百度前端分页效果附实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章: