关于Vue中页面(父组件)下拉,页面中的子组件加载更多数据的实现方法
Posted jane2160
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Vue中页面(父组件)下拉,页面中的子组件加载更多数据的实现方法相关的知识,希望对你有一定的参考价值。
一个项目中存在很多这种情况:父组件(页面)中的子组件需要做下拉加载更多的需求,但是这个下拉到底部的动作只能通过监控页面(父组件)来完成
这就需要父子组件之间的通信,代码如下:
1. 建立一个用于父子组件通信的工具,bus.js
import Vue from ‘vue‘ let bus = new Vue() export default bus
2. 在父组件中监听页面的下拉,并用bus将下拉到底部时这个信号发给子组件,此处bus.js放在lib文件夹下,.container为页面最外层的class
import Bus from ‘@/lib/bus‘
methods: scrollListener () if (window.scrollTimer) clearTimeout(window.scrollTimer) window.scrollTimer = setTimeout(() => let el = document.querySelector(‘.container‘) let innerDiv = document.querySelector(‘.container>div‘) if (el.scrollTop + window.innerHeight >= innerDiv.clientHeight) // 发送拉到底部的信号给子组件 Bus.$emit(‘loadMore‘) , 250)
mounted () document.querySelector(‘.container‘).addEventListener(‘scroll‘, this.scrollListener)
3. 在子组件中接受该信号,并调用加载数据的方法
created () Bus.$off(‘loadMore‘) Bus.$on(‘loadMore‘, () => // 在此调用加载更多数据的方法 )
以上是关于关于Vue中页面(父组件)下拉,页面中的子组件加载更多数据的实现方法的主要内容,如果未能解决你的问题,请参考以下文章