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

2020-08-14 21:29发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我试图设置一个模型并在按下某个按...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


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

问题是,当我在"成功"函数之外调用getModel时,它返回未定义。

因为" onPressButton1"在执行"成功"功能之前完全运行。

那么有什么方法可以确保首先调用"成功"功能? 并在onPressButton1中。

如果我将整个代码放在"成功"函数中,则将无法使用" this"关键字来调用函数" this.fDoThis();"

参考代码:

 onPressButton1:function(){
 var vEntityURL ="/img/CustomerSet(ID ='000')";
 var sServiceUrl ="/img/Customers_SRV/";
 var oServiceModel = new sap.ui.model.odata.ODataModel(sServiceUrl,true);
 var oJsonModel = new sap.ui.model.json.JSONModel();

 oServiceModel.read(vEntityURL,{
 成功:function(oData){
 oJsonModel.setData(oData);
 sap.ui.getCore()。setModel(oJsonModel," Customers");
 }
 });

 var oCustomer = this.getView()。getModel(" Customers");
 console.log(oCustomer.getProperty("/img/Name"));
 }

 
付费偷看设置
发送
2条回答
xfwsx85
1楼 · 2020-08-14 21:57.采纳回答

使用V2 odata模型,不建议使用v1。

尝试更改成功处理程序,如下所示。 Add.bind(this)并将模型设置为查看

成功:function(oData){
 oJsonModel.setData(oData);
 this.getView()。setModel(oJsonModel," Customers");
 } .bin(this)
一只江湖小虾
2楼-- · 2020-08-14 22:07

现在,我可以使用" this"了。 但是,是否有成功的机会在其父功能之前运行?

例如,除非两次按下按钮,否则以下内容将在控制台中返回错误:

 onPressButton1:function(){
 var vEntityURL ="/img/CustomerSet(ID ='000')";
 var sServiceUrl ="/img/Customers_SRV/";
 var oServiceModel = newsap.ui.model.odata.ODataModel(sServiceUrl,true);
 var oJsonModel = newsap.ui.model.json.JSONModel();

 oServiceModel.read(vEntityURL,{
 成功:功能(oData){
 oJsonModel.setData(oData);
                 this.getView()。setModel(oJsonModel," Customers");

 } .bind(this)

 });

 var oCustomer = this.getView()。getModel(" Customers");
 console.log(oCustomer.getProperty("/img/Name"));} 

一周热门 更多>