SAPUI5详情页无报错但JSON数据不显示问题排查求助
问题原因分析
详情页视图绑定语法错误
你在detail.view.xml中ID字段的绑定表达式多了一个多余的单引号:<!-- 错误写法 --> <Text text="{id'}"/> <!-- 正确写法 --> <Text text="{id}"/>这个语法错误会导致ID字段绑定失效,同时可能影响同上下文其他字段的绑定解析。
数据绑定路径拼接错误
你在detail.controller.js的_onObjectMatched方法中,直接把业务ID作为数组索引拼接路径:// 错误写法:数组需要用数字索引访问,不能直接用业务ID当索引 var sObjectPath = "/Articles/"+oEvent.getParameter("arguments").ID;你的
Articles是普通数组,合法的路径应该是/Articles/0、/Articles/1这类带数字索引的格式,直接用AR00000111这种业务ID当索引根本找不到对应数据。
修复方案
有两种可选方案,任选其一即可:
方案1:直接传递数组索引(实现最简单)
修改main.controller.js的onPress方法,传条目的索引而不是业务ID:
onPress: function (oEvent) { var oItem = oEvent.getSource(); var oRouter = sap.ui.core.UIComponent.getRouterFor(this); // 获取当前条目在数组中的索引,替换原来的id取值 var iItemIndex = oItem.getBindingContext().getPath().split("/").pop(); oRouter.navTo("detail", { ID: iItemIndex }); }
同时修正detail.view.xml里ID的绑定语法即可。
方案2:根据业务ID匹配对应条目(适合ID不随数组顺序变化的场景)
如果需要保留传业务ID的逻辑,修改detail.controller.js的_onObjectMatched方法,先根据ID查找对应条目的索引:
_onObjectMatched: function (oEvent) { var sId = oEvent.getParameter("arguments").ID; var oModel = this.getView().getModel(); var aArticles = oModel.getProperty("/Articles"); // 遍历数组匹配对应ID的条目 var iTargetIndex = aArticles.findIndex(item => item.id === sId); if(iTargetIndex > -1){ var sObjectPath = "/Articles/" + iTargetIndex; this._bindView(sObjectPath); } }
同样需要修正detail.view.xml里ID的绑定语法错误。
内容的提问来源于stack exchange,提问作者Naf
相关产品推荐
相关产品推荐

