收藏
回答

上拉加载更多失效?

原来的代码是查询了5次才实现的效果,想优化代码,优化之后,遇到两个问题,1、上拉加载失效,加载不出数据。2、第二个问题是,总计数,当上拉加载后,计数被改了,显示的是数据库全部的数量,如图。求大神指点,是什么问题?

代码:

 /**
   * 获取数据库数据
   */
  async lowdrelease(index,start = 0) {
    const that = this;
    let query = {};
    switch(index){
      case 0:
        //查询全部数据
        break;
      case 1:
        query = {carpool:'我要找人'};
        break;
      case 2:
        query = {carpool:'我要找车'};
        break;
      case 3:
        query = {carpool:'我找货车'};
        break;
      case 4:
        query = {carpool:'我要找货'};
        break
    }
    let promise = db.collection("wehicle").where(query);
    if (start > 0) {
      promise = promise.skip(start);
      console.log(promise)
    }
    promise.limit(5)
        .orderBy("redden.reddenStartTime",'desc')
        .orderBy("topping.toppingStarttime","desc")
        .orderBy("create_time""desc")
        .get().then(res => {
      console.log(res);
      const wehicles = res.data;
      promise.count().then(res => {
        that.setData({
          result: res.total
        });
      });
      let hasmore = false
      let newWehicles = start > 0 ? that.data.wehicles.concat(wehicles) : wehicles;
      newWehicles.forEach((wehicle, index) => {
        wehicle.create_time = wehicle.create_time.toString();
      });
      that.setData({
        wehicles:newWehicles,
        hasmore:hasmore,
      })
    })
  },
   /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    let hasmore = true;
    if(this.data.wehicles.length == 0){
      hasmore = false
    }
    this.setData({
      hasmore:hasmore
    })
    if(!this.data.isQuerying) {
      this.lowdrelease(this.data.wehicles.length);  
    }else{
      this.onchaxun(this.data.listzeros.length);
    }   
  },
回答关注问题邀请回答
收藏

1 个回答

  • 余生
    余生
    10-25

    给你优化了一下

    async lowdrelease(index, start = 0) {
    		const that = this;
    		let query = {};
    		switch (index) {
    			case 0:
    				break;
    			case 1:
    				query = {
    					carpool: '我要找人'
    				};
    				break;
    			case 2:
    				query = {
    					carpool: '我要找车'
    				};
    				break;
    			case 3:
    				query = {
    					carpool: '我找货车'
    				};
    				break;
    			case 4:
    				query = {
    					carpool: '我要找货'
    				};
    				break;
    		}
    		let promise = db.collection("wehicle").where(query);
    
    
    		if (start > 0) {
    			promise = promise.skip(start);
    		}
    
    
    		// 限制每次获取数据数量并排序
    		promise = promise.limit(5)
    			.orderBy("redden.reddenStartTime", 'desc')
    			.orderBy("topping.toppingStarttime", "desc")
    			.orderBy("create_time", "desc");
    
    
    		const wehiclesRes = await promise.get();
    		const wehicles = wehiclesRes.data;
    
    
    		// 统计符合条件的总数而不是所有数据
    		const countRes = await db.collection("wehicle").where(query).count();
    
    
    		// 合并当前获取的数据
    		const newWehicles = start > 0 ? that.data.wehicles.concat(wehicles) : wehicles;
    
    
    		that.setData({
    			wehicles: newWehicles,
    			hasmore: wehicles.length === 5,
    			result: countRes.total
    		});
    	}
    
    10-25
    有用
    回复 3
    • 蓝天☁
      蓝天☁
      10-26
      效果是一样的,弄了个代码片段,你帮我看下,之前分5次查询,加上查询事件,相当于查询了10次,另外还有个问题就是查询输入框,当点击查询后清空输入框,而不影响查询的效果,目前的效果是当再次点击输入框的时候清空输入框的值,这样感觉体验的效果不咋滴,https://developers.weixin.qq.com/s/TE5VVem17yVH。用断点调试,不怎么会用,网上查了些,也是比较模糊,就是不知道怎么找问题。图片就是断点调试的截图,第二张是页面的排版
      10-26
      回复
    • 余生
      余生
      10-26回复蓝天☁
      加我好友 给你远程看看 代码没有权限
      10-26
      回复
    • 蓝天☁
      蓝天☁
      10-27回复余生
      我把微信发你私信了
      10-27
      回复
登录 后发表内容