我已经实现了一个函数导入,它接受来自实体A的合作伙伴代码,并从实体B返回合作伙伴描述。不能在这里使用关联,因为代码不是实体A键的一部分而且SEGW不允许我创造一个。从实体B开始加载数据也不是一个选项,包含超过150.000个条目。函数导入工作正常,我的问题是格式化程序似乎没有等待从oData调用返回的数据,即使我已经附加了一个promise和" batchrequestcompleted"事件。我在调试器中看到了所有指令以正确的顺序执行(并返回了预期的结果)但看起来似乎没有等待。是否有某种技术可以用来使视图等待结果,或者我是否必须在我的实体A中附加额外的字段以便将描述存储在后端,这显然是我不想要的原因去做。 (真的很短)下面附有代码,有什么想法吗?
干杯,
格雷格
PS:当观察代码时,有人会很容易注意到值被返回两次,一次是在成功函数中,一次是在promise之后。毕竟,它只是用于测试,它们都不起作用:D
textPartner : function (sValue) {
if (!sValue) {
return "";
}
var that = this.getParent().getParent().getParent().getParent().getParent().getParent().getParent().getParent().getController();
var oModel = this.getModel();
var oModelUpdateDeferred = jQuery.Deferred();
oModel.attachEventOnce("batchRequestCompleted", function(oEvent) {
if (that._checkIfBatchRequestSucceeded(oEvent)) {
oModelUpdateDeferred.resolve();
}
});
oModel.callFunction("/Get_Partner_Name", { urlParameters: { Partner_Code: sValue },
success: function(oData, sResponse) {
sValue = oData.ReturnValue;
return sValue;
},
error: function(oError) {
jQuery.sap.log.error("oData Failure", oError);
}
});
var readyToGo = function() {
return sValue;
};
jQuery.when(oModelUpdateDeferred).done().then( jQuery.proxy(readyToGo, this) );
}
答案 0 :(得分:0)
解决方法是在SEGW中创建关联并使用expand函数,这里没有格式化程序