当前位置:   article > 正文

el-select实现懒加载(自定义指令)_el-select懒加载

el-select懒加载

el-select下拉框懒加载实现

直接上代码 

页面结构部分

  1. <div>
  2. 选择活动:
  3. <el-select
  4. filterable
  5. v-model="activity"
  6. style="width: 300px"
  7. @change="selectChange"
  8. //自定义指令懒加载方式
  9. v-el-select-lazyloading="lazyloading"
  10. >
  11. <el-option
  12. :label="item.practiceName"
  13. :value="item.id"
  14. v-for="item in activityList"
  15. :key="item.id"
  16. ></el-option>
  17. </el-select>
  18. </div>

data数据

  1. // 分页(懒加载使用)
  2. listData: {
  3. limit: 8,
  4. page: 1,
  5. },
  6. activityList:[],

自定义指令

  1. directives: {
  2. "el-select-lazyloading": {
  3. bind(el, binding) {
  4. let SELECT_DOM = el.querySelector(
  5. ".el-select-dropdown .el-select-dropdown__wrap"
  6. );
  7. SELECT_DOM.addEventListener("scroll", function () {
  8. let condition =
  9. this.scrollHeight - this.scrollTop <= this.clientHeight;
  10. if (condition) {
  11. binding.value();
  12. }
  13. });
  14. },
  15. },
  16. },

方法

  1. methods: {
  2. // 下拉框懒加载
  3. lazyloading() {
  4. this.listData.page++;
  5. this.getList();
  6. },
  7. //请求
  8. getList() {
  9. this.$http
  10. .get(`/****/******/****`, {
  11. params: {
  12. id: this.id,
  13. limit: this.listData.limit,
  14. page: this.listData.page,
  15. },
  16. })
  17. .then(({ data: res }) => {
  18. if (res.code !== 0) {
  19. return this.$message.error(res.msg);
  20. }
  21. this.activityList = [...this.activityList, ...res.data.list];
  22. });
  23. }
  24. }

思路:通过监视el-select的下拉框滚动行为,当滚动到底部触发执行函数去请求新的数据,将新请求到的数据插入到当前数据中实现懒加载的功能。

*个人总结记录,节省部分脑细胞~,也欢迎各位遇到同样问题的同学前来参考~~~

有问题的话欢迎各位大佬指导,给予更优解~~~

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