You need to enable JavaScript to run this app. SAPUI5 绑定JSONModel后sap.m.Select不显示选项文本仅展示数组元素数
优惠活动
大模型
产品
解决方案
定价
更多

SAPUI5 绑定JSONModel后sap.m.Select不显示选项文本仅展示数组元素数

核心问题:聚合绑定下的子元素绑定路径完全错误

所有选项文本无法正常渲染的根源,是对SAPUI5聚合绑定的上下文规则理解有偏差,你尝试的三种写法全部存在路径引用错误,没有一处正确关联到循环数组的单项元素。

各写法的具体错误点

  • 初始写法的错误
    在Select的items已经绑定到test>/ProductCollection数组的前提下,子节点<core:Item>的属性用了带根路径的绝对绑定{test>/SelectedProduct/ProductId}、{test>/SelectedProduct/Name}。
    首先SelectedProduct本身是字符串值"HT-1001",不存在嵌套的ProductId、Name属性,路径解析结果为undefined;其次绝对路径不会随着数组循环自动切换上下文,始终指向模型固定位置,根本读不到数组每一项的属性值。
  • 第一次尝试修正的错误
    修改为{test>/ProductCollection/ProductId}、{test>/ProductCollection/Name}的写法,依然是根节点绝对路径,指向的是整个ProductCollection数组对象,数组本身不存在ProductId、Name的顶层属性,解析结果同样是undefined,无法跟随循环遍历切换到每一个数组元素的上下文。
  • 第二次尝试修正的错误
    用点号做路径分隔的{test>ProductCollection.ProductId}写法,一方面SAPUI5绑定语法的路径分隔符是斜杠/而非点号,本身语法识别就存在问题;另一方面依然将上下文锚定到模型根节点的ProductCollection层级,没有关联到循环的单项元素。

为什么会出现“仅显示元素数量、不显示文本”的现象

聚合绑定的逻辑是:只要items绑定的路径能取到有效数组,就会按照数组长度自动生成对应数量的Item节点;但因为所有Item的key、text绑定值都是解析失败的undefined,节点渲染出来就是没有文本内容的空选项,视觉上就会错觉控件只统计了元素个数,没有正常加载内容。

正确的实现方式

当items完成数组路径绑定后,系统会自动把当前遍历到的每一个数组元素,作为内部<core:Item>的绑定上下文,此时Item上的key、text属性只需要写相对当前上下文的路径,不需要重复写模型名和根路径:

<Select
    selectedKey="{test>/SelectedProduct}"
    items="{
       path: 'test>/ProductCollection',
       sorter: { path: 'Name' }
    }">
    <core:Item key="{ProductId}" text="{Name}" />
</Select>

配套注意规则

  • 路径分隔符统一使用斜杠/,禁止用点号代替
  • 绝对路径(开头带/)用于固定位置的全局值绑定,比如你写的selectedKey="{test>/SelectedProduct}"就是正确的绝对路径用法,这个部分不需要修改
  • 聚合循环内部的子元素属性,必须用相对路径才能正确读取每一个循环项的属性值
  • 你测试数据里连续三个HT-1002的重复条目属于测试数据本身的重复,不属于绑定逻辑问题,绑定正常后只是会渲染三个相同的选项而已

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 08:45:05