SAPUI5: getModel возвращает undefined, если вызывается в той же функции setModel
Я пытаюсь установить модель и получить ее из OData после нажатия определенной кнопки.
Проблема в том, что когда я вызываю getModel сразу после установки модели, она возвращает undefined.
Однако, если я вызываю getModel из другой функции (после того, как модель была удалена из других функций), она возвращает желаемый результат.
Код для справки:
onPressButton1: function(){
var vEntityURL = "/CustomerSet(ID='000')";
var sServiceUrl = "/Customers_SRV/";
var oServiceModel = new sap.ui.model.odata.ODataModel(sServiceUrl, true);
var oJsonModel = new sap.ui.model.json.JSONModel();
oServiceModel.read(vEntityURL, {
success: function(oData) {
oJsonModel.setData(oData);
}
});
this.getView().setModel(oJsonModel, "Customers");
var oCustomer = this.getView().getModel("Customers");
console.log(oCustomer.getProperty("/Name"));
}
Приведенное выше возвращает undefined в консоли.
Однако это сработает, если я нажму другую кнопку со следующей функцией.
onPressButton2: function(){
var oCustomer = this.getView().getModel("Customers");
console.log(oCustomer.getProperty("/Name"));
}
1 ответ
Решение
Это не проблема sapui5, это обычное поведение асинхронного кода: вы можете быть уверены, что ваши данные будут только в обратном вызове успешного выполнения read
метод.
Переместите последние три строки кода внутрь функции успеха, и все готово:-)