如何在SAP UI5详情视图中正确引用导航属性的实体字段?
正确实现方案
1. 修正视图绑定语法
你当前的绑定写法存在语法错误,正确绑定格式如下:
<m:Input value="{TechnicalSpecs/Equipment}" editable="false" visible="true" id="DetailEquipment"/>
如果你的OData服务使用了命名模型,需要加上模型前缀,例如模型名为odataModel时写法为:
<m:Input value="{odataModel>TechnicalSpecs/Equipment}" editable="false" visible="true" id="DetailEquipment"/>
你之前写法中的/开头是绝对路径,在视图已绑定到PROJEKT单实例的场景下不需要加;>是模型分隔符只有使用命名模型时才需要,且模型名要写在>左侧,原写法不符合UI5数据绑定规则。
2. 主动指定导航属性加载参数
OData默认不会在请求主实体时自动加载关联的导航属性数据,你需要在绑定PROJEKT实体实例时添加$expand参数,主动要求服务端返回关联的TechnicalSpecs数据。
如果是在路由匹配后手动绑定视图元素,代码示例:
onRouteMatched: function(oEvent) { const sPspnr = oEvent.getParameter("arguments").pspnr; // 取路由传递的项目主键 this.getView().bindElement({ path: `/PROJEKTSet('${sPspnr}')`, parameters: { $expand: "TechnicalSpecs" } }); }
如果是通过manifest.json配置路由自动绑定,在对应目标的binding配置中添加expand参数:
"targets": { "projectDetail": { "viewName": "ProjectDetail", "binding": { "path": "PROJEKTSet", "parameters": { "$expand": "TechnicalSpecs" } } } }
验证方法
打开浏览器开发者工具的网络面板,查看PROJEKT实体的请求URL后缀是否带有$expand=TechnicalSpecs,确认响应报文中包含TechnicalSpecs的字段数据后,视图对应字段即可正常渲染。
内容的提问来源于stack exchange,提问作者Veit
相关产品推荐
相关产品推荐

