SAPUI5:getModel returns 如果在 setModel 的同一函数中调用则未定义

SAPUI5: getModel returns undefined if called within the same function of setModel

我正在尝试设置模型并在按下某个按钮后从 OData 中检索它。

问题是当我在设置模型后立即调用 getModel 时,它 returns 未定义。

但是,如果我从另一个函数调用 getModel(在从其他函数对模型进行 stetted 之后),它 returns 所需的输出。

参考代码:

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"));
}

以上returns在控制台未定义。

但是,如果我按下具有以下功能的另一个按钮,它会起作用

onPressButton2: function(){
                var oCustomer = this.getView().getModel("Customers");
                console.log(oCustomer.getProperty("/Name"));
    }

这不是sapui5的问题,这是异步代码的常见行为:你可以确保只有在read方法的成功回调中才有你的数据。

将最后三行代码移到 success 函数中,您就完成了:-)