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 метод.

Переместите последние три строки кода внутрь функции успеха, и все готово:-)

Другие вопросы по тегам