收藏
回答

setData 怎样设置数据路径?

我的数据页面分页显示,每次显示5条数据,如果有一页数据不满5条,只有一条,下次刷新的时候,拿到了7条数据,怎样调用一次setdata把7条的前四条放到上一页的数组里,剩下的三条才放在新的一页的数组?因为后的返回数据的时候会把当前页剩余的数据和下一页的数据一起返回,下面是我的实现方式,但是这样写太繁琐了,小程序的数据路径能不能向设置属性一样的去设置,像这样:setDataModel.['product[' + (Number(that.data.pageIndex)) + '][1]']=[];这样就可以在循环里拼接了

const data = JSON.parse(rspn.data.Content);

          const newPageData = [];

          for (var i = that.data.product[that.data.pageIndex].length; i < data.length; i++) {

            newPageData[i - that.data.product[that.data.pageIndex].length] = data[i];

          }


          if (data.length > 0) {

            var setDataModel = {};

            if (that.data.product[that.data.pageIndex].length == 1) {

              if (data.length == 1) {

                setDataModel = {

                  ['product[' + (Number(that.data.pageIndex)) + '][1]']: data[0]

                };

              } else {

                if (data.length == 2) {

                  setDataModel = {

                    ['product[' + (Number(that.data.pageIndex)) + '][1]']: data[0],

                    ['product[' + (Number(that.data.pageIndex)) + '][2]']: data[1]

                  };

                } else {

                  if (data.length == 3) {

                    setDataModel = {

                      ['product[' + (Number(that.data.pageIndex)) + '][1]']: data[0],

                      ['product[' + (Number(that.data.pageIndex)) + '][2]']: data[1],

                      ['product[' + (Number(that.data.pageIndex)) + '][3]']: data[2]

                    };

                  } else {

                    if (data.length == 4) {

                      setDataModel = {

                        ['product[' + (Number(that.data.pageIndex)) + '][1]']: data[0],

                        ['product[' + (Number(that.data.pageIndex)) + '][2]']: data[1],

                        ['product[' + (Number(that.data.pageIndex)) + '][3]']: data[2],

                        ['product[' + (Number(that.data.pageIndex)) + '][4]']: data[3]

                      };

                    } else {

                      setDataModel = {

                        ['product[' + (Number(that.data.pageIndex)) + '][1]']: data[0],

                        ['product[' + (Number(that.data.pageIndex)) + '][2]']: data[1],

                        ['product[' + (Number(that.data.pageIndex)) + '][3]']: data[2],

                        ['product[' + (Number(that.data.pageIndex)) + '][4]']: data[3],

                        ['product[' + (Number(that.data.pageIndex) + 1) + ']']: newPageData

                      }

                    }

                  }

                }

              }

            }



最后一次编辑于  2022-08-12
回答关注问题邀请回答
收藏

3 个回答

  • dreamhunter
    dreamhunter
    2022-08-12

    一般分页处理的话,每次显示5条数据前提下,每次返回的数据集也不会大于5条记录

    2022-08-12
    有用
    回复 2
    • dreamhunter
      dreamhunter
      2022-08-12
      数据频繁需要做接续的,可以把第一次结果中最后一个记录的主键(id)传给后端,后端依据id返回排序后的第二页5条(或者符合查询条件最后几条记录)。
      2022-08-12
      1
      回复
    • 白夜.
      白夜.
      2022-08-12
      这个可以
      2022-08-12
      回复
  • Frank
    Frank
    2022-08-12

    这个分页逻辑 没看懂呀

    2022-08-12
    有用
    回复
  • 白夜.
    白夜.
    2022-08-12

    分页没有做好,后端应该处理好再返回给前端

    2022-08-12
    有用
    回复 5
    • 白夜.
      白夜.
      2022-08-12
      保证每一次数据是5条,只有最后一组数据可以不满5条
      2022-08-12
      回复
    • 白夜.
      白夜.
      2022-08-12
      而且不建议你把分页的数据全部缓存下来吧,数据量很多的时候小程序会很卡的
      2022-08-12
      回复
    • 白夜.
      白夜.
      2022-08-12
      是在要按你这个需求做的话,你把所有的数据先存到一个数组A,
      比如第一次获取到了5条数据,先存数组A,在用数组A来遍历,放在一个二维数组B里面
      第二次获取1条数据,存数组A,此时数组A有6条,遍历存二维数组B,五个为一组
      第三次获取7条,继续存数组A,此时数组A有11条,遍历数组A存数组B,五个为一组
      2022-08-12
      回复
    • 白夜.
      白夜.
      2022-08-12
      用微信的setData只能这样,你可以试试用微信官方出的插件westore:https://github.com/Tencent/westore/tree/v1
      里面有一个diff方法,专门用来对比数据更新用的
      2022-08-12
      回复
    • 白夜.
      白夜.
      2022-08-12回复白夜.
      看了你的代码
      2022-08-12
      回复
登录 后发表内容