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
相关产品推荐
相关产品推荐

