list-view-refresh.uvue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <template>
  2. <list-view v-if="list_show" id="listview" style="flex: 1;" show-scrollbar=false :refresher-enabled="true"
  3. :refresher-triggered="refresherTriggered" @refresherrefresh="onRefresherrefresh" @refresherabort="onRefresherabort"
  4. @refresherrestore="onRefresherrestore" @refresherpulling="onRefresherpulling">
  5. <list-item class="item">
  6. <text>向下滑动触发下拉刷新</text>
  7. </list-item>
  8. <list-item v-for="index in item_count" class="item">
  9. <text>item-------{{index}}</text>
  10. </list-item>
  11. </list-view>
  12. </template>
  13. <script>
  14. type RefresherEventTest = {
  15. type : string;
  16. target : UniElement | null;
  17. currentTarget : UniElement | null;
  18. dy : number;
  19. }
  20. export default {
  21. data() {
  22. return {
  23. item_count: 20,
  24. list_show: false,
  25. refresherTriggered: true,
  26. // 自动化测试使用
  27. refresherrefreshTest: "",
  28. onRefresherabortTest: "",
  29. onRefresherrestoreTest: "",
  30. onRefresherpullingTest: ""
  31. }
  32. },
  33. onLoad() {
  34. //延迟显示list-view
  35. setTimeout(() => {
  36. this.list_show = true;
  37. }, 500)
  38. },
  39. methods: {
  40. onRefresherrefresh(e : UniRefresherEvent) {
  41. console.log('refresherrefresh-----下拉刷新被触发', e.detail.dy);
  42. this.refresherTriggered = true;
  43. this.checkEventTest({
  44. type: e.type,
  45. target: e.target,
  46. currentTarget: e.currentTarget,
  47. dy: e.detail.dy,
  48. } as RefresherEventTest, 'refresherrefresh')
  49. setTimeout(() => {
  50. this.refresherTriggered = false;
  51. }, 1000)
  52. },
  53. onRefresherabort(e : UniRefresherEvent) {
  54. console.log("onRefresherabort------下拉刷新被中止", e.detail)
  55. this.checkEventTest({
  56. type: e.type,
  57. target: e.target,
  58. currentTarget: e.currentTarget,
  59. dy: e.detail.dy,
  60. } as RefresherEventTest, 'refresherabort')
  61. },
  62. onRefresherrestore(e : UniRefresherEvent) {
  63. console.log("onRefresherrestore------下拉刷新被复位", e.detail.dy)
  64. this.checkEventTest({
  65. type: e.type,
  66. target: e.target,
  67. currentTarget: e.currentTarget,
  68. dy: e.detail.dy,
  69. } as RefresherEventTest, 'refresherrestore')
  70. },
  71. onRefresherpulling(e : UniRefresherEvent) {
  72. console.log("onRefresherpulling------拉刷新控件被下拉-dy=" + e.detail.dy)
  73. this.checkEventTest({
  74. type: e.type,
  75. target: e.target,
  76. currentTarget: e.currentTarget,
  77. dy: e.detail.dy,
  78. } as RefresherEventTest, 'refresherpulling')
  79. },
  80. // 自动化测试专用(由于事件event参数对象中存在循环引用,在ios端JSON.stringify报错,自动化测试无法page.data获取)
  81. checkEventTest(e : RefresherEventTest, eventName : String) {
  82. const isPass = e.type === eventName && e.target instanceof UniElement && e.currentTarget instanceof UniElement && e.dy > 0;
  83. const result = isPass ? `${eventName}:Success` : `${eventName}:Fail`;
  84. switch (eventName) {
  85. case 'refresherrefresh':
  86. this.refresherrefreshTest = result
  87. break;
  88. case 'refresherpulling':
  89. this.onRefresherpullingTest = result
  90. break;
  91. case 'refresherrestore':
  92. this.onRefresherrestoreTest = result
  93. break;
  94. case 'refresherabort':
  95. this.onRefresherabortTest = result
  96. break;
  97. default:
  98. break;
  99. }
  100. }
  101. }
  102. }
  103. </script>
  104. <style>
  105. .item {
  106. padding: 15px;
  107. margin: 0 0 5px 0;
  108. background-color: #fff;
  109. border-radius: 5px;
  110. }
  111. .button_item {
  112. width: 200px;
  113. }
  114. </style>