当前位置:   article > 正文

el-select实现数据的懒加载_el-select懒加载

el-select懒加载
  1. <template>
  2. <el-select
  3. v-model="value"
  4. placeholder="请选择"
  5. filterable
  6. multiple
  7. v-el-select-loadmore="loadmore" //加载方法
  8. >
  9. <el-option
  10. v-for="item in options"
  11. :key="item.id"
  12. :label="item.label"
  13. :value="item.id">
  14. </el-option>
  15. </el-select>
  16. </template>
  17. export default {
  18. directives: {
  19. 'el-select-loadmore': {
  20. bind(el, binding) {
  21. // 获取element-ui定义好的scroll盒子
  22. const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap');
  23. SELECTWRAP_DOM.addEventListener('scroll', function () {
  24. /**
  25. * scrollHeight 获取元素内容高度(只读)
  26. * scrollTop 获取或者设置元素的偏移值,常用于, 计算滚动条的位置, 当一个元素的容器没有产生垂直方向的滚 动 条, 那它的scrollTop的值默认为0.
  27. * clientHeight 读取元素的可见高度(只读)
  28. * 如果元素滚动到底, 下面等式返回true, 没有则返回false:
  29. * ele.scrollHeight - ele.scrollTop === ele.clientHeight;
  30. */
  31. const condition = this.scrollHeight - this.scrollTop <= this.clientHeight;
  32. if (condition) {
  33. binding.value();
  34. }
  35. });
  36. }
  37. }
  38. },
  39. data() {
  40. return {
  41. value: '',
  42. options: [],
  43. formData: {
  44. pageIndex: 1,
  45. pageSize: 20,
  46. }
  47. };
  48. },
  49. mounted() {
  50. this.getList(this.formData);
  51. },
  52. methods: {
  53. loadmore() {
  54. this.formData.pageIndex++;
  55. this.getList(this.formData);
  56. },
  57. getList(formData) {
  58. // 这里是接口请求数据, 带分页条件
  59. const _res = [1, 2, 3]; // 请求得到的数据
  60. this.options = [...this.options, ..._res];
  61. }
  62. }
  63. };

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