demo.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <template>
  2. <div class="demo-list">
  3. <nut-infiniteloading @loadmore="onInfinite" :is-show-mod="true" :has-more="isHasMore" :is-loading="isLoading" :threshold="200">
  4. <div class="list">
  5. <nut-cell v-for="(item, index) of data" :key="item" :title="'噜啦噜' + index" sub-title="我又来送福利啦!关注之后你就会">
  6. <div slot="avatar">
  7. <nut-avatar
  8. sizeNum="60"
  9. bg-image="https://img14.360buyimg.com/imagetools/jfs/t1/130112/36/5492/38449/5f1f964cEfd6f41bf/bec836b48b55bb00.jpg"
  10. bg-icon
  11. ></nut-avatar>
  12. </div>
  13. <div slot="desc">
  14. <p class="timer">10:12</p>
  15. <p class="badge">
  16. <nut-badge :value="9" :max="99" top="0px" right="15px"></nut-badge>
  17. </p>
  18. </div>
  19. </nut-cell>
  20. </div>
  21. </nut-infiniteloading>
  22. </div>
  23. </template>
  24. <script>
  25. export default {
  26. data() {
  27. return {
  28. data: new Array(30),
  29. page: 2,
  30. num: 30,
  31. isHasMore: true,
  32. isLoading: false,
  33. isErr: false,
  34. timer: null,
  35. };
  36. },
  37. methods: {
  38. onInfinite() {
  39. this.isLoading = true;
  40. this.timer = setTimeout(() => {
  41. if (this.page <= 5) {
  42. this.data = new Array(this.num * this.page);
  43. this.page = this.page + 1;
  44. } else {
  45. this.isHasMore = false;
  46. }
  47. this.isLoading = false;
  48. }, 100);
  49. },
  50. },
  51. destroyed() {
  52. clearTimeout(this.timer);
  53. },
  54. };
  55. </script>
  56. <style lang="scss" scoped>
  57. .list {
  58. .timer {
  59. color: #c8c8c8ff;
  60. }
  61. .badge {
  62. .nut-badge {
  63. width: 100%;
  64. height: 100%;
  65. }
  66. }
  67. }
  68. </style>