Я реализовал функцию импорта, которая принимает код партнера от объекта A и возвращает описание партнера от объекта B. Здесь нельзя использовать ассоциации, так как код не является частью ключа объекта A, а SEGW не позволяет мне создаватьодин.Загрузка данных из объекта B в начале тоже не вариант, содержит более 150 000 записей.Импорт функций работает просто отлично, моя проблема в том, что средство форматирования, похоже, не ожидает данных, возвращающихся из вызова oData, даже если я прикрепил и обещание, и событие «batchrequestcompleted».Я смотрел все инструкции, выполненные в правильном порядке внутри отладчика (и возвращал ожидаемый результат), но кажется, что представление не ждет.Есть ли какая-то техника, которую я могу использовать, чтобы заставить представление ждать результата, или мне нужно прикрепить дополнительные поля в моей сущности А, чтобы сохранить описание в бэкэнде, что по понятным причинам я не хочу делать,(Действительно короткий) код, прикрепленный ниже, есть идеи?
Приветствия,
Грег
PS: кто-то легко заметит, наблюдая за кодом, что значение возвращается дважды, один разв функции успеха и один раз после обещания.Это просто для тестирования, в конце концов, ни один из них не работает: 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) );
}