oDatav2读取并将属性绑定到视图/表单

2020-09-06 20:39发布

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

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


嗨,

我无法获得模型中的数据与GUI之间的绑定以进行通信。
数据肯定在Read()之后的模型中,但我无法在Form中看到它。

我不想再创建任何模型。 我想使用已有的模型(oDataV2)

请提出建议,

Br Martin

/* eslint禁用无调试器*/
 sap.ui.define([
 " sap/ui/core/mvc/Controller"
 ],函数(控制器){
 "使用严格";


 return Controller.extend(" zbeerns.ZBEER_79.controller.BeerMaterial",{
 onInit:函数(){
 },
 onRead:function(){
//" oFormBeerMaterial
 调试器;
 var oModel = this.getOwnerComponent()。getModel(" oModelBeer");
 this.getView()。setModel(oModel);
 var that = this;

 oModel.read("/img/BeerMaterialSet(3001)",{
 成功:功能(oData,响应){
 调试器;
 var mythis = that;
 sap.m.MessageToast.show("成功获取数据ID =" + oData.Id);

 }
 });
 }
 });
 }); 
 
 
 <页面>
 
 <内容>
 
 
 
 

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

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


嗨,

我无法获得模型中的数据与GUI之间的绑定以进行通信。
数据肯定在Read()之后的模型中,但我无法在Form中看到它。

我不想再创建任何模型。 我想使用已有的模型(oDataV2)

请提出建议,

Br Martin

/* eslint禁用无调试器*/
 sap.ui.define([
 " sap/ui/core/mvc/Controller"
 ],函数(控制器){
 "使用严格";


 return Controller.extend(" zbeerns.ZBEER_79.controller.BeerMaterial",{
 onInit:函数(){
 },
 onRead:function(){
//" oFormBeerMaterial
 调试器;
 var oModel = this.getOwnerComponent()。getModel(" oModelBeer");
 this.getView()。setModel(oModel);
 var that = this;

 oModel.read("/img/BeerMaterialSet(3001)",{
 成功:功能(oData,响应){
 调试器;
 var mythis = that;
 sap.m.MessageToast.show("成功获取数据ID =" + oData.Id);

 }
 });
 }
 });
 }); 
 
 
 <页面>
 
 <内容>
 
 
 
 
付费偷看设置
发送
9条回答
悠然的二货
1楼-- · 2020-09-06 21:02

你好马丁,

您的视图和模型似乎没有很好的联系,我的意思是 read 操作的结果尚未发送到用户界面。 为此,请使用以下语句替换当前的读取操作:

 this.getView()。bindElement("/img/BeerMaterialSet(3001)")

KR

亚瑟·席尔瓦

太Q了
2楼-- · 2020-09-06 21:13

你好马丁,

成功了吗?

KR,
Arthur Silva

太Q了
3楼-- · 2020-09-06 21:26

不要将您的jsonmodel经验应用于odatamodel

您只需在ui中进行绑定,这将进行必要的调用 来获取数据。

My梦
4楼-- · 2020-09-06 21:22
https://people.sap.com/martin5081 ODataModel.read具有 与OData * Binding相比,功能甚至更少。 过滤,排序,自定义参数等都是可能的,其中许多甚至是XML声明式的。 尽管在某些情况下,阅读还是会比现有解决方案更受青睐,但总的来说,我强烈建议您投入更多的时间来研究如何避免采用看似更简单的方法。
蓋茨
5楼-- · 2020-09-06 21:15

Martin,

方法read()完全按照预期进行,它从给定的url读取数据。 以下是一些假设:

  • 获取模型oModelBeer定义的 manifest.json
 var oModel = this.getOwnerComponent()。getModel(" oModelBeer"); 
  • 将模型附加到视图(此处未绑定)
 this.getView()。setModel(oModel); 
  • 获取请求-read()(此处未绑定)
 oModel.read("/img/BeerMaterialSet(3001)",{


现在,您必须将成功回调中的结果(oData)自己绑定到视图。 这是您的代码中缺少的步骤:

 oModel.read("/img/BeerMaterialSet(3001)",{
   成功:功能(oData,响应){
     调试器; //检查'oData','oData.results'中可能包含一些值
    //var mythis = that; 
this.getView()。getModel()。setData(oData); sap.m.MessageToast.show("成功获取数据ID =" + oData.Id); } },this);

KR
亚瑟·席尔瓦(Arthur Silva)

吹牛啤
6楼-- · 2020-09-06 21:07

嗨,亚瑟,

感谢您的支持。

我仍然有些困惑,因为在回调函数中,我的oModel中已经有了所需的数据。 然后无需再次设置数据。

我也不想分离这些数据,因为我将使用双向绑定并在更改" GUI"时采用自动更新模型的方法。

再说一次。 所有数据都可以在"成功"中找到,并且将模型设置为视图。 为什么没有在GUI中显示数据?

Br Martin

一周热门 更多>