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 函数中,您就完成了:-)
我正在尝试设置模型并在按下某个按钮后从 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 函数中,您就完成了:-)