SAP UI5绑定JSON模型数据到详情页出现oModel.createKey不存在错误
报错根因
createKey是**OData模型(sap.ui.model.odata.v2/v4.ODataModel)**专属的方法,你使用的是JSONModel,本身不提供这个API,所以调用会直接报错。
修复方案
将detail.controller.js中_onObjectMatched方法替换为以下代码,手动匹配数据索引拼接绑定路径即可:
_onObjectMatched: function (oEvent){ var oModel = this.getView().getModel("articles"); var sKeyId = oEvent.getParameter("arguments").articleId; var that = this; oModel.dataLoaded().then(function(){ // 遍历数组匹配id获取索引 var aArticles = oModel.getProperty("/Articles"); var nTargetIndex = aArticles.findIndex(function(oArticle) { return oArticle.id === sKeyId; }); if (nTargetIndex > -1) { // 绑定路径要指定对应模型名 that.getView().bindElement({ path: "/Articles/" + nTargetIndex, model: "articles" }); } }); },
其他需要同步修正的问题
- 重复加载模型:你已经在manifest中全局声明了
articles模型,无需在main.controller.js的onInit中重复实例化加载同一份JSON数据,直接删除main.controller.js的onInit所有代码即可,框架会自动完成模型初始化挂载,所有视图可直接调用。 - 绑定语法错误:
detail.view.xml中ID字段的绑定多写了单引号,将<Text text="{articles>id'}"/>改为<Text text="{articles>id}"/>。
内容的提问来源于stack exchange,提问作者Naf
相关产品推荐
相关产品推荐

