点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我们在构建UI5应用时遇到了问题。 我有一个名为"提供者"的组件,该组件显示服务提供者及其经度和纬度详细信息的列表。 当我们单击任何服务提供商时,它将导航到"详细应用"。
通过使用调用详细信息应用程序:
sap.ui.getCore()。createComponent({
名称:" XXX.ProviderDetails",
id:" providerDtl",
componentData:{
" targetViewName":"主要"
},
设置:{
serviceID:serviceID,
provRefGUID:proGUID,
遇见GUID:EncounterGUID,
距离:距离
}
上面的代码调用Details component.js的init方法。 在组件初始化方法中,我编写了所有代码以使用promise从OData获取数据,然后在then块中调用了
sap.ui.core.UIComponent.prototype.init.apply(this,arguments);。
Component.js:
初始化:function(){
尝试{
console.log(" init init");
var oConfig = this.getMetadata()。getConfig();
//设置i18n模型
var i18nModel = this.getModel(" i18n");
this.setModel(i18nModel," i18n");
//创建域模型并将其设置为组件
var oModel = this.getModel();
//oModel.setSizeLimit(5000);
this.setModel(oModel);
var oComp = this;
尝试{
sap.ui.getCore()。loadLibrary(" openui5.googlemaps"," ./openui5/googlemaps");
//sap.ui.require(['mhs/horizon/ProviderDetails/openui5/googlemaps/MapUtils']);
sap.ui.require(['openui5/googlemaps/MapUtils']);
openui5.googlemaps.ScriptsUtil.setApiKey('*******');
}抓住(e){
jQuery.sap.log.error(" mhs.horizon.ProviderDetails.Component中的错误:创建component():正在加载地图:" + e);
}
//获取URL参数
this.sSamKey = this.getURLParameterValue(" SOURCE_SESSION_ID");
如果(this.sSamKey ==未定义|| this.sSamKey ==""){
this.sSamKey =" TEST_SAMKEY";
}
this.sEncounterGUID = this.getURLParameterValue(" EncounterGUID");
this.sServiceID = this.getURLParameterValue(" ServiceID");
var dist = this.getURLParameterValue(" Distance");
this.sDistance = this.validateDistance(dist);
this.sProvRefGUID = this.getURLParameterValue(" ProvRefGUID");
oComp = this;
尝试{
调试器;
var meetPromise = this.readEncounterData(oComp,this.sEncounterGUID);
遇见Promise.then(function(oData){
如果(this.sServiceID && this.sProvRefGUID && this.sEncounterGUID){
var srvProvPromise = this.readServiceProviders(this.sServiceID,this.sProvRefGUID,this.sEncounterGUID,oComp);
var that = this;
srvProvPromise.then(function(){
调试器;
sap.ui.core.UIComponent.prototype.init.apply(this,arguments);
} .bind(this))。catch(function(oResult){
console.log(" errorERE!此处为undefined111");
oComp.displayError(oResult);
} .bind(this));
}
} .bind(this))。catch(function(oResult){
console.log(" errorERE!此处为undefined111");
oComp.displayError(oResult);
} .bind(this));
}抓住(e){
jQuery.sap.log.error(" mhs.horizon.ProviderDetails.Component中的错误:初始化component():" + e);
}
}抓住(e){
jQuery.sap.log.error(" mhs.horizon.ProviderDetails.Component中的错误:初始化component():" + e);
}
},
在默认的SAP标准中,上述代码中的,即用型函数init.apply调用即用型函数createContent方法来调用Main视图,该主视图又调用其他视图控制器,如图所示 下面。
createContent:function(){
尝试{
调试器;
//声明路由器
var oRouter = this.getRouter();
this.oRouteHandler =新的sap.m.routing.RouteMatchedHandler(oRouter);
oRouter.register(" appRouterPD");
return sap.ui.view({
id:this.createId(" idMain"),
viewName:" mhs.horizon.ProviderDetails.view.Main",
类型:sap.ui.core.mvc.ViewType.XML,
viewData:{
组件:此
}
});
}抓住(e){
jQuery.sap.log.error(" csview.CallSummary createContent()中的错误:" + e);
}
},
现在的问题是,一切都可以完美执行,并且在Console中没有错误。 但是用户界面是空白的。 仅当init.apply在promise的" then"块中时,才会出现此问题。
您能对此提供任何反馈吗?
通过快速回顾,我认为您需要使用一个模型来捕获来自诺言的响应,而不仅仅是变量。 基本上,如果您使用JSONModel并将设置映射到该模型,那么当您获得Promise响应并更新模型数据时,它将自动更新所有模型绑定。
我可以在尝试创建此示例的示例中看到相同的行为。
我的样本也显示它不起作用:
不确定原因,但我认为我们需要备份一点。 您为什么要使这些项目同步?
通过使用模型,响应何时发生都没关系,一旦填充了模型,屏幕就会更新。
一周热门 更多>