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

SAPUI5详情页无报错但JSON数据不显示问题排查求助

问题原因分析

  1. 详情页视图绑定语法错误
    你在detail.view.xml中ID字段的绑定表达式多了一个多余的单引号:

    <!-- 错误写法 -->
    <Text text="{id'}"/>
    <!-- 正确写法 -->
    <Text text="{id}"/>
    

    这个语法错误会导致ID字段绑定失效,同时可能影响同上下文其他字段的绑定解析。

  2. 数据绑定路径拼接错误
    你在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:36:06