我正在尝试设置模型并在按下某个按钮后从 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] 删除。
我来说两句