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

UI5 JS视图中如何动态绑定数组对象的STOFFTYP所有值到表格?

我来帮你解决这个UI5表格绑定动态数组的问题,核心问题出在绑定路径的指向——你需要让表格直接遍历stoff数组,而不是绑定到它的父节点。

问题根源

你当前的bindItems路径是"/results/rs999",这个路径指向的是包含stoff数组的父对象,而非数组本身,这就导致了几个问题:

  • 用stoff/STOFFTYP无法获取数据:因为stoff是数组,不是单个可直接访问属性的对象;
  • 直接写stoff会显示[object Object]:这是在直接输出数组里的每个对象实例,没有指定要显示的属性;
  • 硬编码索引stoff/0/STOFFTYP只能拿到第一个元素:没法自动遍历数组里的所有元素。

解决方案

调整绑定路径让表格直接指向stoff数组,然后在模板里用相对路径访问每个数组元素的STOFFTYP属性即可。

修改后的控制器代码

// 1. 定义列表项模板:直接用相对路径访问数组元素的属性
var oInnerTemplate2 = new sap.m.ColumnListItem({
  cells: [
    new sap.m.Text({ text: "test" }),
    new sap.m.Text({ text: "{STOFFTYP}" }) // 直接写属性名,无需拼接复杂路径
  ]
});

// 2. 绑定到stoff数组的完整路径
// 假设elementId是父节点的路径(比如"/results/rs999"),拼接"/stoff"指向目标数组
var stoffArrayPath = elementId + "/stoff";
this.byId("innerTable2").setModel(oModel).bindItems(stoffArrayPath, oInnerTemplate2);

为什么这样可行?

当表格的bindItems路径指向stoff数组后,UI5会自动遍历数组内的每一个对象,每个ColumnListItem都会对应数组中的一个元素。此时模板里的{STOFFTYP}是相对当前数组元素的路径,自然能正确获取每个元素的属性值,不管数组长度是1还是65,都能自动适配。

额外简化说明

如果你的表格所在的视图已经有父上下文绑定(比如父控件已经绑定到/results/rs999),还可以用相对路径进一步简化绑定:

// 用"./stoff"表示当前上下文下的stoff数组
this.byId("innerTable2").bindItems("./stoff", oInnerTemplate2);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:11:02