SAPUI5:如果在 setModel 的同一函数中调用,则 getModel 返回 undefined

阿卜杜拉

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

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

但是,如果我从另一个函数调用 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"));
    }
指令

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JTable在调用getModel()时返回JTable

如果在double for循环内,否则返回undefined

SAPUI5 - sap.m.Input:如果在正确的设备上运行,它会自动调用软(虚拟)键盘吗?

如果在错误的通道中执行命令返回

返回参数如果在子表中满足某些条件

返回使用缩短的,如果在Python中else语句

如果在 Laravel 中验证失败,则返回错误

如果在同一翻译单元中调用函数,为什么需要重定位

MySql:如果在函数内或外部调用相同的select count(*)查询,则返回不同的结果

返回类型:如果在函数中有条件地调用sys.exit()

undefined 从函数返回

Webscraper 函数返回 undefined

如果在 foreach 方法中的所有方法调用都返回 true

如果在python类中,则无法返回函数结果

如果在JS返回函数中不为空或为null

如果在打字稿中传递可选参数,则更改函数返回类型

函数在字符串中调用后返回 undefined

从函数调用 JSON.parse 返回 Undefined

如果在WebView中按下“后退”按钮,如何返回上一页?

一行如果在VB.Net中不返回可为空的整数

如果在另一个表mysql中存在ID,如何返回标志

如果在回调函数内部调用了另一个函数,则add_filter('the_content')不会按预期返回

在带有布尔选项的r中创建函数:如果在调用函数时不提供布尔选项,如何返回数据框?

返回第一次出现的位置,如果在循环链表中没有找到则返回-1

为什么在箭头函数中引用时“ this”返回“ undefined”,而在匿名函数中调用时为何不返回“ undefined”?

StreamReader 在 WriteLine 函数上显示内容,但如果在变量中使用它则返回空

如果在MYSQL中的COUNT(*)查询中找不到记录,则返回0

如果在 Oracle 中没有选择行,则在列中返回 0

如果在UNION查询中未找到某些日期的记录,则返回0