主从模型。 信息不具有约束力

2020-08-27 13:49发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有我的主视图: ...

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

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


我有我的主视图:

 
 
 
 
 <内容>
 
 

和控制器:

 sap.ui.define([
 './Formatter',
 'sap/ui/core/mvc/Controller',
 'sap/ui/model/json/JSONModel',
 " sap/ui/core/UIComponent"
 ],函数(格式程序,控制器,JSONModel,UIComponent){
 "使用严格";


 返回Controller.extend(" sap.suite.ui.commons.demokit.tutorial.icecream.08.controller.ListProducts",{


 onInit:函数(){
//在此示例上设置浏览的应用程序的演示模型
 var oModel = new JSONModel(sap.ui.require.toUrl(" sap/suite/ui/commons/demokit/tutorial/icecream/08/model/data")+"/products.json");
 this.getView()。setModel(oModel," product");
 },


 onNavButtonPressed:function(){
 this.getOwnerComponent()。getRouter()。navTo(" home");
 },


 onPress:函数(oEvent){
//获取触发此事件的源代码控件
 var oItem = oEvent.getSource();
//获取控件的绑定上下文
 var oCtx = oItem.getBindingContext(" product");
//获取绑定路径并截断第一个'/',以便在将路径作为导航模式附加到url中时不会引起问题
 var sPath = oCtx.getPath()。substr(1);
//获取路由器的实例,然后导航到"详细信息视图"。
 var oRouter = this.getOwnerComponent()。getRouter();
 oRouter.navTo(" Object",{
 路径:encodeURIComponent(sPath)
 });
 }


 });


 }); 

此外,我可以查看详细信息:

 
 <页面
 id =" page"
 title ="产品详情"
 showNavButton =" true"
 navButtonPress ="。onNavBack">
 <内容>
 
 <属性>
 
 
 
 
 
 
 
 
 
  

还有详细信息的控制器。

 sap.ui.define([
 " sap/ui/core/mvc/Controller"
 ],功能(
 控制者
 ){
 "使用严格";
 return Controller.extend(" sap.suite.ui.commons.demokit.tutorial.icecream.08.controller.Object",{
 onInit:函数(){
 var oRouter = sap.ui.core.UIComponent.getRouterFor(this); //获取路由器
 oRouter.getRoute(" Object")。attachPatternMatched(this._onObjectMatched,this); //附加路由器模式
 },
 _onObjectMatched:函数(oEvent){
//读取作为URL模式一部分传递的路径变量(在路由器配置中定义)
 var sPath = oEvent.getParameter(" arguments")。path;
//在此视图中使用路径在ObjectHeader UI控件上执行元素绑定
 this.getView()。byId(" ObjectHeaderID")。bindElement({
 路径:"/"。concat(decodeURIComponent(sPath)),
 型号:"产品"
 });
 },
 onNavBack:函数(){
 this.getOwnerComponent()。getRouter()。navTo(" ListProducts",{},true);
 }
 });
 }); 

在manifest.json中:

"路线":[{
 " pattern":"",
 " name":" home",
 " target":"起始页"
 },{
 " pattern":" processFlow",
 " name":" processFlow",
 " target":" processFlow"
 },{
 " pattern":" processFlow2",
 " name":" processFlow2",
 " target":" processFlow2"
 },{
 " pattern":" processFlow3",
 " name":" processFlow3",
 " target":" processFlow3"
 },{
 " pattern":" PDFViewerEmbedded",
 "名称":" PDFViewerEmbedded",
 " target":" PDFViewerEmbedded"
 },{
 " pattern":" ListProducts",
 " name":" ListProducts",
 " target":" ListProducts"
 },{
 " pattern":" UploadDownload",
 " name":" UploadDownload",
 " target":" UploadDownload"
 },{
 " pattern":" FeedNews",
 " name":" FeedNews",
 " target":" FeedNews"
 },{
 " pattern":"对象/{路径}",
 " name":" Object",
 " target":" Object"
 }],

我只是无法将一页绑定到另一页,因此无法在"详细信息"视图中检索数据。

有什么建议吗? 谢谢。

努诺

3条回答
宇峰Kouji
2020-08-27 13:57 .采纳回答

我明白了,我看到在您的母版页中,模型仅绑定到母版页vview(this.getView()。setModel())。 因此,这就是为什么当您在详细信息页面中使用具有该模型名称的bindElement时,它无法工作的原因,因为该模型仅在母版页中可用。

因此将模型绑定到组件中的组件 母版页。 this.getOwnerComponent()。setModel()

之后,该模型将同时显示在主页面和详细信息页面中。

谢谢,
马哈什

一周热门 更多>