• Element 自定义指令 下拉分页,获取无限数据


    原文链接icon-default.png?t=N7T8https://www.cnblogs.com/DL-CODER/p/17528026.html自定义指令loadmore:

    1. Vue.directive('loadmore', {
    2. bind(el, binding) {
    3. // 获取element-ui定义好的scroll盒子
    4. const SELECTWRAP_DOM = el.querySelector(
    5. '.el-select-dropdown .el-select-dropdown__wrap'
    6. )
    7. if (SELECTWRAP_DOM) {
    8. SELECTWRAP_DOM.addEventListener('scroll', function() {
    9. /*
    10. * scrollHeight 获取元素内容高度(只读)
    11. * scrollTop 获取或者设置元素的偏移值,常用于, 计算滚动条的位置, 当一个元素的容器没有产生垂直方向的滚动条, 那它的scrollTop的值默认为0.
    12. * clientHeight 读取元素的可见高度(只读)
    13. * 如果元素滚动到底, 下面等式返回true, 没有则返回false:
    14. * ele.scrollHeight - ele.scrollTop === ele.clientHeight;
    15. */
    16. const CONDITION =
    17. this.scrollHeight - this.scrollTop - 1 <= this.clientHeight
    18. if (CONDITION) {
    19. console.log('----------------------------')
    20. console.log('loadmore', CONDITION)
    21. console.log('scrollHeight', this.scrollHeight)
    22. console.log('scrollTop', this.scrollTop)
    23. console.log('clientHeight', this.clientHeight)
    24. console.log('----------------------------')
    25. binding.value()
    26. }
    27. })
    28. }
    29. }
    30. })

    methods 方法:

    1. loadmoreBatchList() {
    2. if (this.batchList.total > this.batchList.list.length) {
    3. this.getBatchList(data, ++this.batchList.pageNo)
    4. }
    5. },
    6. getBatchList(data, pageNo = 1) {
    7. // data 为接口传递的自定义数据 (即获取下一页数据)
    8. this.$store.dispatch('getOutboundBatchsList', {
    9. ...data,
    10. pageNo: pageNo,
    11. pageSize: this.batchList.pageSize
    12. })
    13. .then(({ code = 0, data = {} }) => {
    14. if (code == 1 && data.total) {
    15. this.batchList = {
    16. ...this.batchList,
    17. list: uniqBy([...this.batchList.list, ...data.list], 'id'),
    18. total: data.total
    19. }
    20. }
    21. })
    22. },

     data 下拉数据:

    1. batchList: {
    2. list: [],
    3. total: 0,
    4. pageNo: 1,
    5. pageSize: 100
    6. },

    template 代码:

    1. <el-form-item>
    2. <el-select
    3. v-model="form.batchId"
    4. v-loadmore="loadmoreBatchList"
    5. placeholder="请输入批次名称"
    6. filterable
    7. clearable>
    8. <el-option v-for="(item, key) in batchList.list" :key="key" :label="item.batchName" :value="item.id"></el-option>
    9. </el-select>
    10. </el-form-item>

  • 相关阅读:
    前几天,小灰去贵州了
    数据分析利器---jupyter
    python图片:获得颜色占比,图片尺寸
    常见消息队列分析对比
    3、IOC——基于注解管理bean
    【读书笔记】高级FPGA设计之高速率结构设计
    软路由的负载均衡设置:优化网络性能和带宽利用率
    基于 Rainbond 的 Pipeline(流水线)插件
    Jmeter 自动化性能测试常见问题汇总
    Aws Ec2服务器设置密码登录
  • 原文地址:https://blog.csdn.net/qq_37385617/article/details/134277376