问题描述
环境
框架:SAPUI5 V.1.38.39
使用的控件:Table
IDE:SAP Web IDE
问题
绑定到控件的数据为或为空,或者为oData模型而不是oData“子模型”
代码
manifest.json中主模型的定义:
"sap.app": {
[...]
"dataSources": {
"ZTRACK_AND_TRACE_SRV": {
"uri": "/sap/opu/odata/sap/ZTRACK_AND_TRACE_SRV","type": "OData","settings": {
"odataVersion": "2.0","localUri": "localService/Metadata.xml","annotations": []
}
}
}
},[...]
"sap.ui5": {
[...]
"models": {
"TrackAndTrace": {
"type": "sap.ui.model.odata.ODataModel","settings": {
"defaultOperationMode": "Auto","defaultBindingMode": "OneWay","defaultCountMode": "None"
},"dataSource": "ZTRACK_AND_TRACE_SRV","preload": true
},"HandlingUnitMultipleModel": {
"type": "sap.ui.model.odata.ODataModel",[...]
}
在控制器中创建oData模型:
sap.ui.define([
[...]
"TrackAndTrace/ztntapp_b2b/model/models"
],function ([...],models) {
"use strict";
return BaseController.extend("TrackAndTrace.controller.DirectTrackView",{
formatter: formatter,onInit: function () {
var sSendingId = window.URI()._parts.fragment.split("/")[2] ? window.URI()._parts.fragment.split("/")[2] : "";
var sWaybill = window.URI()._parts.fragment.split("/")[3] ? window.URI()._parts.fragment.split("/")[3] : "";
var sZip = window.URI()._parts.fragment.split("/")[4] ? window.URI()._parts.fragment.split("/")[4] : "";
this.initODataModel();
this.getView().setModel(models.createHandlingUnit(this.oTrackNTraceModel,sSendingId,sWaybill,sZip),"HandlingUnitModel");
// this.oTrackNTraceModel is the model from the manifest
[...]
},[...]
如何在model.js中定义HandlingUnitModel:
createHandlingUnit: function (oModel,sZip) {
var HandlingUnitModel = new JSONModel();
oModel.read(`/HANDLING_UNITSet(SendingId='${sSendingId}',Waybill='${sWaybill}',Zip='${sZip}')`,{
success: function (oData) {
HandlingUnitModel.setData(oData.results ? oData.results[0] : oData);
}
});
return HandlingUnitModel;
},
最后在try 1上查看:
<Table inset="false" items="{path: 'HandlingUnitModel>/toDetails'}" id="tableStatusDetails">
<columns>
<Column minScreenWidth="Tablet" demandPopin="true" width="15%">
<Text text="{i18n>date}"/>
</Column>
<Column minScreenWidth="Tablet" demandPopin="true" width="15%">
<Text text="{i18n>time}"/>
</Column>
<Column minScreenWidth="Tablet" demandPopin="true" width="40%">
<Text text="{i18n>state}"/>
</Column>
<Column minScreenWidth="Tablet" demandPopin="true" width="30%">
<Text text="{i18n>city}" />
</Column>
</columns>
<items>
<ColumnListItem>
<cells>
<Text text="{path:'HandlingUnitModel>/StateTimestamp',type:'sap.ui.model.type.Date'}"/>
<Text text="{path:'HandlingUnitModel>/StateTimestamp',formatter:'.formatter.formatStateTime'}"/>
<Text text="{parts:[{path: 'HandlingUnitModel>/EventCategory'},{path: 'HandlingUnitModel>/StateId'},{path: 'HandlingUnitModel>/StateDescription'}],formatter:'.formatter.noExpectedStatus'}">
<customData>
<core:CustomData key="EventCategory" value="{HandlingUnitModel>/EventCategory}"/>
</customData>
</Text>
<Text text="{HandlingUnitModel>/City}" />
</cells>
</ColumnListItem>
</items>
</Table>
尝试1的问题是绑定数据来自HandlingUnitModel,而不是表的“ items”属性中提到的HandlingUnitModel / toDetails
尝试2:
<Table inset="false" items="{path: 'HandlingUnitModel>/toDetails'}" id="tableStatusDetails">
<columns>
<Column minScreenWidth="Tablet" demandPopin="true" width="15%">
<Text text="{i18n>date}"/>
</Column>
<Column minScreenWidth="Tablet" demandPopin="true" width="15%">
<Text text="{i18n>time}"/>
</Column>
<Column minScreenWidth="Tablet" demandPopin="true" width="40%">
<Text text="{i18n>state}"/>
</Column>
<Column minScreenWidth="Tablet" demandPopin="true" width="30%">
<Text text="{i18n>city}" />
</Column>
</columns>
<items>
<ColumnListItem>
<cells>
<Text text="{path:'HandlingUnitModel>StateTimestamp',type:'sap.ui.model.type.Date'}"/>
<Text text="{path:'HandlingUnitModel>StateTimestamp',formatter:'.formatter.formatStateTime'}"/>
<Text text="{parts:[{path: 'HandlingUnitModel>EventCategory'},{path: 'HandlingUnitModel>StateId'},{path: 'HandlingUnitModel>StateDescription'}],formatter:'.formatter.noExpectedStatus'}">
<customData>
<core:CustomData key="EventCategory" value="{HandlingUnitModel>/EventCategory}"/>
</customData>
</Text>
<Text text="{HandlingUnitModel>City}" />
</cells>
</ColumnListItem>
</items>
</Table>
使用try 2时,没有数据绑定,表为空,控制台中没有任何错误消息
尝试3:
<Table inset="false" items="{path: 'HandlingUnitModel>/toDetails'}" id="tableStatusDetails">
<columns>
<Column minScreenWidth="Tablet" demandPopin="true" width="15%">
<Text text="{i18n>date}"/>
</Column>
<Column minScreenWidth="Tablet" demandPopin="true" width="15%">
<Text text="{i18n>time}"/>
</Column>
<Column minScreenWidth="Tablet" demandPopin="true" width="40%">
<Text text="{i18n>state}"/>
</Column>
<Column minScreenWidth="Tablet" demandPopin="true" width="30%">
<Text text="{i18n>city}" />
</Column>
</columns>
<items>
<ColumnListItem>
<cells>
<Text text="{path:'HandlingUnitModel>/toDetails/StateTimestamp',type:'sap.ui.model.type.Date'}"/>
<Text text="{path:'HandlingUnitModel>/toDetails/StateTimestamp',formatter:'.formatter.formatStateTime'}"/>
<Text text="{parts:[{path: 'HandlingUnitModel>/toDetails/EventCategory'},{path: 'HandlingUnitModel>/toDetails/StateId'},{path: 'HandlingUnitModel>/toDetails/StateDescription'}],formatter:'.formatter.noExpectedStatus'}">
<customData>
<core:CustomData key="EventCategory" value="{HandlingUnitModel>/EventCategory}"/>
</customData>
</Text>
<Text text="{HandlingUnitModel>/toDetails/City}" />
</cells>
</ColumnListItem>
</items>
</Table>
尝试3的问题与尝试2的问题相同
假设
我想从HandlingUnitModel> / toDetails中的数据没有加载,为什么?以及如何实现它?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)