当前位置:   article > 正文

Element——在el-table上使用无限滚动加载_element-table结合infinitescroll使用

element-table结合infinitescroll使用

使用了自带的infinite-scroll插件

还遇到了一个坑,在滚动加载时ajax请求被多次重复触发,下面来解决。

一、安装插件

npm install --save el-table-infinite-scroll

二、引入

全局引入

  1. import Vue from 'vue';
  2. import elTableInfiniteScroll from 'el-table-infinite-scroll';
  3. Vue.use(elTableInfiniteScroll);

局部引入

  1. <script>
  2. import elTableInfiniteScroll from 'el-table-infinite-scroll';
  3. export default {
  4. directives: {
  5. 'el-table-infinite-scroll': elTableInfiniteScroll
  6. }
  7. }
  8. </script>

三、实例使用

解决重复多次发送请求的重点是isflag

template部分

  1. <template>
  2. <div>
  3. <el-table
  4. height="550px"
  5. :data="tableData"
  6. v-loading="loading"
  7. v-el-table-infinite-scroll="load"
  8. :default-sort="{prop: 'last_report_time', order: 'descending'}">
  9. <el-table-column
  10. type="index"
  11. width="50">
  12. </el-table-column>
  13. <el-table-column
  14. v-if="show"
  15. prop="device_id"
  16. width="50">
  17. </el-table-column>
  18. <el-table-column
  19. prop="device_no"
  20. label="设备编号"
  21. width="150">
  22. </el-table-column>
  23. <el-table-column
  24. prop="dev_type"
  25. label="设备类型"
  26. width="150"
  27. :filters="[{ text: '土壤检测仪', value: '土壤检测仪' }, { text: '环境检测仪', value: '环境检测仪' }]"
  28. :filter-method="filterType"
  29. filter-placement="bottom-end">
  30. </el-table-column>
  31. <el-table-column
  32. prop="road_name"
  33. label="所属街道"
  34. width="150">
  35. </el-table-column>
  36. <el-table-column
  37. prop="status"
  38. label="设备状态"
  39. :filters="[{ text: '正常', value: '正常' }, { text: '故障', value: '故障' }]"
  40. :filter-method="filterTag"
  41. filter-placement="bottom-end">
  42. <template slot-scope="scope">
  43. <el-tag
  44. :type="scope.row.status === '正常' ? 'primary' : 'warning'"
  45. disable-transition>{{scope.row.status}}
  46. </el-tag>
  47. </template>
  48. </el-table-column>
  49. <el-table-column
  50. prop="last_report_time"
  51. label="最后上报时间"
  52. sortable>
  53. </el-table-column>
  54. <el-table-column
  55. fixed="right"
  56. label="操作"
  57. width="100">
  58. <template slot-scope="scope">
  59. <el-button
  60. size="mini"
  61. type="text"
  62. @click="handleEdit(scope.$index, scope.row)">查看
  63. </el-button>
  64. </template>
  65. </el-table-column>
  66. </el-table>
  67. <el-alert v-if="isflag"
  68. title="正在努力加载中..."
  69. type="success"
  70. center
  71. :closable="false"
  72. show-icon>
  73. </el-alert>
  74. <el-alert v-if="isMore"
  75. title="没有更多啦!"
  76. type="warning"
  77. center
  78. show-icon>
  79. </el-alert>
  80. </div>

methods中的load函数

  1. load() {
  2. this.isMore = false;
  3. this.isflag = true;
  4. if (this.isflag) {
  5. this.getDevices();
  6. this.page++;
  7. }
  8. }

四、实现效果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/193914
推荐阅读
相关标签
  

闽ICP备14008679号