如何重用Odata模型填充第二个视图

2020-09-08 13:30发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我正在创建一个具有2...

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

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


专家们,

我正在创建一个具有2个视图的应用程序。我在Manifest.json中创建了一个名为odata Model的名称为:matDescModel,并且据了解,可以从任何视图访问该模型(我正确)。

现在单击按钮后,我将使用以下后端数据填充此模型:

 var matnr = this.getView()。byId(" __ inp0")。getValue();
 var path =" matDescModel>/GetMatDescSet('" + matnr +"')";
 this.getView()。bindElement(path);
 

我可以在具有绑定的View中查看数据,如下所示:

  

效果很好

现在在View 2上,我正在执行相同类型的绑定:

  

在onInit()中的view 2控制器中具有以下代码:

 var oModel = this.getOwnerComponent()。getModel(" matDescModel");
 this.getView()。setModel(oModel);
 

当我看到view2的oModel时,可以在调试器代码中看到oData,请参见屏幕截图

odata.jpg

但是在视图2上,我没有在屏幕上看到数据,

这是一个有约束力的问题吗? 还是框架只允许绑定一次?

我是否需要从控制器手动进行绑定或如何实现绑定??

致谢

Rakesh

odata.jpg (16.1 kB)
4条回答
Bunny_CDM
2020-09-08 13:36

您不能限制对第二个视图的后端调用,可以尝试以下一种方法,

1)在绑定的更改事件中, 您可以将数据设置为全局json模型(在component.js中定义),

 this.getView()。bindElement({
 路径:路径,
 事件:{
   更改:this._onBindingChange.bind(this)
   }
 });
 和
 _onBindingChange:function(){
   var data = this.getView()。getBindingContext()。getObject();
  //将此数据设置为json模型并在第二个视图中使用
  //或使用快速方式,您可以携带全局变量,即$ .sap.view1Data = data,并且可以在第二个视图中访问$ .sap.view1Data
 } 

2)进行odata读取调用并准备一个json模型并在两个视图中使用

3)您可以使用模式中的router将值传递给第二个视图

>

一周热门 更多>