我可以在格式化程序中使用 oData 调用吗?
Can I use oData calls within a formatter?
我已经实现了一个函数导入,它接受来自实体 A 的合作伙伴代码和 returns 来自实体 B 的合作伙伴描述。不能在这里使用关联,因为代码不是实体 A 密钥的一部分并且 SEGW 不允许我创建一个。从一开始就从实体 B 加载数据也不是一个选项,包含超过 150.000 个条目。函数导入工作得很好,我的问题是格式化程序似乎没有等待从 oData 调用返回的数据,即使我已经附加了承诺和 "batchrequestcompleted" 事件。我观察了所有在调试器中以正确顺序执行的指令(并返回了预期的结果),但似乎视图没有等待。是否有某种技术可以让视图等待结果,或者我是否必须在我的实体 A 中附加额外的字段以便将描述存储在后端,出于明显的原因我不想这样做. (真的很短)下面附上代码,有什么想法吗?
干杯,
格雷格
PS:有人在观察代码时很容易注意到值返回了两次,一次在成功函数中,一次在承诺之后。这只是为了测试,毕竟,none 有效 :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) );
}
解决方法是在 SEGW 中创建关联并使用扩展函数,这里没有格式化程序
我已经实现了一个函数导入,它接受来自实体 A 的合作伙伴代码和 returns 来自实体 B 的合作伙伴描述。不能在这里使用关联,因为代码不是实体 A 密钥的一部分并且 SEGW 不允许我创建一个。从一开始就从实体 B 加载数据也不是一个选项,包含超过 150.000 个条目。函数导入工作得很好,我的问题是格式化程序似乎没有等待从 oData 调用返回的数据,即使我已经附加了承诺和 "batchrequestcompleted" 事件。我观察了所有在调试器中以正确顺序执行的指令(并返回了预期的结果),但似乎视图没有等待。是否有某种技术可以让视图等待结果,或者我是否必须在我的实体 A 中附加额外的字段以便将描述存储在后端,出于明显的原因我不想这样做. (真的很短)下面附上代码,有什么想法吗?
干杯,
格雷格
PS:有人在观察代码时很容易注意到值返回了两次,一次在成功函数中,一次在承诺之后。这只是为了测试,毕竟,none 有效 :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) );
}
解决方法是在 SEGW 中创建关联并使用扩展函数,这里没有格式化程序