zoukankan      html  css  js  c++  java
  • vue项目的问题--tab切换上拉加载

    最近在写vue的项目,遇到的问题总结:

    loading为false是加载中,finished为true是已结束状态,onLoad是执行函数(分页添加list的值)

    初始化loading为false,finished为false。

    加载的list,页面上有个切换的tab,实现切换不同的类型,加载不同的list的功能。vant-ui的list就有个bug,当切换tab的时候,它的onload没方法自动触发。然而在当前标签页,如果列表已经加载完毕再去切换,onload就可以实现自动触发。

            <van-tabs v-model="active" sticky @click="changeAct">
                <van-tab v-for="(item,ind) in navtitle" :title="item" :key="ind">
                    <van-pull-refresh v-model="isLoading" @refresh="onRefresh">
                        <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad(page,keyword,orderColumn)">
                            <IndexTemp v-for="(item,i) in goodList" :good="item" :key="i"></IndexTemp>
                        </van-list>
                    </van-pull-refresh>
                </van-tab>
            </van-tabs>

    在切换tab后执行初始化函数

                //切换tab
                changeAct(index, title) {
                    this.active = index;
                    this.orderColumn = title == '价格' ? 'price' : title == '上新' ? 'time' : 'default';
                    if(this.orderColumn == 'price') {
                        this.orderTypeCut = !this.orderTypeCut;
                    }
                    this.orderType = this.orderTypeCut ? 'desc' : 'asc';
                    this.page = 1;
                    this.goodList = [];
                    this.loading = true;
                    this.finished = false;
                    if(this.loading){
                        this.onLoad(this.page, this.keyword, this.orderColumn);
                    }
                },
                onLoad(page, keyword, orderColumn) {
                    this.pageload=true;
                    var self = this;
                    var url = this.util.head_host + 'goods/list';
                    var params = new FormData();
                    params.append('client_id', this.util.client_id);
                    params.append('timestamp', this.util.timestamp);
                    params.append('sign', this.util.sign);
                    params.append('page', page);
                    params.append('keyword', keyword);
                    params.append('orderColumn', orderColumn);
                    if(orderColumn == 'price') {
                        params.append('orderType', this.orderType);
                    }
                    this.$api({
                        method: 'POST',
                        url: url,
                        data: params,
                        headers: {
                            'token': self.util.access_token
                        },
                    }).then(function(res) {
                        if(res.data.code == 0) {
                            //console.log(res.data)
                            if(res.data.data.length > 0) {
                                self.goodList = self.goodList.concat(res.data.data);
                            }
                            self.lastPage = res.data.nextPage;
                            self.page = self.lastPage;
                            // 加载状态结束
                            self.loading = false;
                            // 数据全部加载完成
                            if(self.lastPage == 0) {
                                self.finished = true;
                            }
                        } else if(res.data.code == 401) {
                            self.callJsFunction;
                            self.onLoad(self.page, self.keyword, self.orderColumn)
                        }
                        self.pageload=false;
    
                    }).catch(function() {
                    })
                },

    在第一次onload的过程中将loading设置为false,则触发第二次loading,当执行到满足结束条件的时候,finished为true,结束加载。

  • 相关阅读:
    StringTokenizer类的使用
    ResultSet相关ResultSetMetaData详细
    jdbcTemplate 获取数据表结构
    关于数组和List之间相互转换的方法
    cat ,more, Less区别
    落地数据和不落地数据
    eclipse代码格式化
    如何修改word的项目编号
    .Net配置文件——反射+配置文件存储类型实例
    unix mkdir命令的使用方法
  • 原文地址:https://www.cnblogs.com/xiao-ling-zi/p/10837790.html
Copyright © 2011-2022 走看看