You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pageLoading选项加载jsGrid数据遇错求助

解决jsGrid loadData时this.data is undefined的问题

是的,你必须从响应中提取并解析正确的数据格式——当前接口返回的结构和jsGrid要求的完全不匹配,这就是报错的核心原因。

数据结构差异说明

  • jsGrid要求的格式:直接包含data数组和itemsCount数值的对象
  • 你的接口返回结构:一个数组 → 数组第一个元素的data字段是JSON字符串 → 该字符串解析后才是接近要求的结构(注意里面是itemcount而非jsGrid要求的itemsCount驼峰名)

修改loadData函数的具体操作

按以下步骤处理响应数据,转换成jsGrid能识别的格式:

controller: {
  loadData: function (filter) {
    return fetch("/internal/dataPackage.XXXX")
      .then(response => response.json())
      .then(rawData => {
        // 1. 取返回数组的第一个元素
        const firstRow = rawData[0];
        if (!firstRow?.data) {
          throw new Error("响应数据格式异常");
        }
        // 2. 解析JSON格式的字符串
        const parsedData = JSON.parse(firstRow.data);
        // 3. 转换为jsGrid要求的标准格式
        return {
          data: parsedData.data,
          itemsCount: Number(parsedData.itemcount) // 转成数值类型,适配jsGrid要求
        };
      })
      .catch((error) => {
        toastr["error"]("数据加载失败: " + error.message, "Error");
        // 返回空结构避免jsGrid持续报错
        return { data: [], itemsCount: 0 };
      });
  }
}

关键步骤解释

  • rawData[0]:接口返回的是单元素数组,直接取第一个元素即可
  • JSON.parse(firstRow.data):接口返回的data是字符串化的JSON,必须解析成对象才能读取内部数据
  • Number(parsedData.itemcount):jsGrid要求itemsCount是数值类型,接口返回的是字符串,所以需要做类型转换

这样处理后,返回的结构完全符合jsGrid的要求,就能正常渲染数据,不会再出现this.data is undefined的错误。

内容的提问来源于stack exchange,提问作者user3685388

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 00:54:55