Book.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <template>
  2. <div>
  3. <!-- <p>图书列表</p> -->
  4. <Card v-for="book in books" :key="book.openid" :book='book'></Card>
  5. <p class="text-footer" v-if="!more">
  6. 没有更多数据
  7. </p>
  8. </div>
  9. </template>
  10. <script>
  11. // 35条数据
  12. // 每次加载10条
  13. // 0页 0-10
  14. // 1 10-20
  15. // 2 20-30(5)
  16. // page 当前第几页
  17. // 没有更多数据
  18. // 1. page=0 不能显示这条提醒
  19. // 2. page>0 数据长度<10 停止触底加载
  20. import {get} from '@/util'
  21. import Card from '@/components/Card'
  22. export default {
  23. components: {
  24. Card
  25. },
  26. data () {
  27. return {
  28. books: [],
  29. page: 0,
  30. more: true,
  31. }
  32. },
  33. methods: {
  34. async getList (init) {
  35. if (init) {
  36. this.page = 0;
  37. this.more = true;
  38. }
  39. wx.showNavigationBarLoading();
  40. const books = await get('/weapp/booklist', {page:this.page});
  41. if (books.list.length<10 && this.page>0) {
  42. this.more = false; // 这种情况下 没有更多数据了
  43. // console.log(this.more);
  44. }
  45. if (init) {
  46. this.books = books.list;
  47. wx.stopPullDownRefresh(); // 手动停止下拉刷新
  48. } else {
  49. // 下拉刷新,不能直接覆盖books 而是累加
  50. this.books = this.books.concat(books.list);
  51. }
  52. wx.hideNavigationBarLoading(); // 关闭下拉刷新加载
  53. },
  54. // async getTop() {
  55. // const tops = await get('/weapp/top');
  56. // this.tops = tops.list;
  57. // }
  58. },
  59. onPullDownRefresh() {
  60. this.getList(true);
  61. // console.log('下拉');
  62. },
  63. onReachBottom() {
  64. // console.log('没有更多了')
  65. if (!this.more) {
  66. // 没有更多了
  67. return false;
  68. }
  69. this.page++;
  70. // console.log('上啦加载', this.page)
  71. this.getList();
  72. },
  73. mounted () {
  74. this.getList(true);
  75. }
  76. }
  77. </script>
  78. <style lang='scss'>
  79. </style>