/** * 数据加载状态监听 * @see './bLoadingToast.js' 和 '../../component/loadingstatus' */ module.exports = Behavior({ data: { cPage: 1, tPage: 1, perPage: 10, totalCount: 0, loading: false, needLoadMore: false, timeout: false }, timeoutId: '', lastLoading: false, observers: { 'loading': function (loading) { if (this.lastLoading == loading) return if (loading) { clearTimeout(this.timeoutId) this._loadStart() this._loading() this.timeoutId = setTimeout(() => { this.setData({ loading: false, timeout: true }) }, 10000); } else { clearTimeout(this.timeoutId) this._loadComplete() } this.lastLoading = loading }, 'cPage, tPage': function (cPage, tPage) { this.setData({ needLoadMore: cPage < tPage }) }, 'reachBottom': function(reachBottom) { if (reachBottom) { this._onReachBottom() } }, }, methods: { _onReachBottom() { // console.log('_onReachBottom'); let {cPage, tPage, loading} = this.data if (!loading && cPage < tPage) { if (typeof this.loadmore === 'function') { this.loadmore(cPage) } } }, // 加载开始通知 _loadStart() { this.triggerEvent('loadStart') if (typeof this.loadStart === 'function') { this.loadStart() } }, // 加载中通知 _loading() { this.triggerEvent('loading') if (typeof this.loading === 'function') { this.loading() } }, // 加载完成通知 _loadComplete() { this.triggerEvent('loadComplete') if (typeof this.loadComplete === 'function') { this.loadComplete() } }, } })