My_listbox.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <template>
  2. <view class="container">
  3. <view id="mylisttop" />
  4. <scroll-view class="scroll-view" scroll-y :refresher-enabled='pullDown' :refresher-triggered='inRefresh'
  5. :style="{ height: height + 'px' }" :triggered='true' @refresherrefresh='pullToRefresh' :lower-threshold='300'
  6. @scrolltolower='loadThePage'>
  7. <view>
  8. <slot />
  9. </view>
  10. <view v-if="empty">
  11. <view :style="{ height: tovw(occupyHeight) }" />
  12. <u-empty :mode="mode" />
  13. </view>
  14. </scroll-view>
  15. </view>
  16. </template>
  17. <script>
  18. export default {
  19. name: 'My_listbox',
  20. props: {
  21. getlist: Function,
  22. empty: Boolean,
  23. mode: {
  24. type: String,
  25. default: "data"
  26. },
  27. pullDown: {
  28. type: Boolean,
  29. default: true
  30. },
  31. occupyHeight: {
  32. type: Number,
  33. default: 50
  34. }
  35. },
  36. data() {
  37. return {
  38. inRefresh: false, //下拉开启自定义项
  39. height: 0
  40. };
  41. },
  42. methods: {
  43. /* 下拉刷新 */
  44. pullToRefresh() {
  45. this.inRefresh = true
  46. this.$emit("getlist", true)
  47. },
  48. /* 刷新完成 */
  49. RefreshToComplete() {
  50. setTimeout(() => {
  51. this.inRefresh = false
  52. }, 500)
  53. },
  54. /* 加载分页 */
  55. loadThePage() {
  56. this.$emit("getlist", false)
  57. },
  58. /* 设置组件高度 */
  59. setHeight(mode, num) {
  60. this.getHeight("#mylisttop", this).then(res => {
  61. let height = res;
  62. if (mode == 'add') {
  63. height = (res - 0) + (num - 0);
  64. } else if (mode == 'minus') {
  65. height = res - num
  66. }
  67. if (this.height != height) this.height = height
  68. });
  69. }
  70. },
  71. }
  72. </script>
  73. <style lang="scss" scoped>
  74. .scroll-view {
  75. position: relative;
  76. }
  77. </style>