在SAPUI5中使用路由匹配处理程序发布

2020-09-02 05:03发布

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

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


嗨,

我正在开发一个主从应用程序,并且基于在主页面上单击某个项目的情况,我想在详细信息页面中显示详细信息。 我正在使用json模型。 问题是,当在主视图上单击某个项目时,我能够获取从我的主控制器发送到详细控制器的路线/导航路径,但是然后,当我使用我收到的路线/导航路径进行元素绑定时 详细信息控制器,我的详细信息视图控件未绑定到数据。 现在,如果我先将JSON模型分配给我的详细信息视图,然后使用接收到的路径进行元素绑定,则它可以工作。 下面是代码。

Master.controller.js

 onInit:function(){

 var oJsonModel = new sap.ui.model.json.JSONModel(" model/mockData/fruits.json");
 this.getView()。setModel(oJsonModel);
 this.oRouter = this.getOwnerComponent()。getRouter();

 },

 showFruitDet:function(oEvent){//这是单击主视图中的项目时发生的事件
 var sPath = oEvent.getParameter(" listItem")。getBindingContextPath();
 var indexOfFruit = sPath.split("/");
 indexOfFruit = indexOfFruit [indexOfFruit.length-1];
 this.oRouter.navTo(" detail",{id:indexOfFruit});
 }
 

Detail.controller.js

//在细节控制器中,我能够获取
//在主视图中单击了对象。
//现在,如果我取消注释onInit方法中的最后一条语句
//在Herculis方法中取消注释第4条语句,我得到
//详细信息页面上的输出。
//如果我保留这两个语句的注释,则
//详细页面为空。
//我的问题是,我是否必须再次分配JSON模型
//详细显示视图,然后将元素与路径绑定?
//我在这里想念什么吗?

 onInit:function(){
 this.router = this.getOwnerComponent()。getRouter();
 this.router.attachRoutePatternMatched(this.herculis,this);
//this.oJsonModel = new sap.ui.model.json.JSONModel(" model/mockData/fruits.json");
 },

 大力神:function(oEvent){
 var selectedItemIndex = oEvent.getParameter(" arguments")。id;
 var sPath ="/img/fruits/" + selectedItemIndex;
 var oForm = this.getView()。byId(" oFruitForm");
//this.getView().setModel(this.oJsonModel);
 this.getView()。bindElement(sPath);
//oForm.bindElement(sPath);
 }
 

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

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


嗨,

我正在开发一个主从应用程序,并且基于在主页面上单击某个项目的情况,我想在详细信息页面中显示详细信息。 我正在使用json模型。 问题是,当在主视图上单击某个项目时,我能够获取从我的主控制器发送到详细控制器的路线/导航路径,但是然后,当我使用我收到的路线/导航路径进行元素绑定时 详细信息控制器,我的详细信息视图控件未绑定到数据。 现在,如果我先将JSON模型分配给我的详细信息视图,然后使用接收到的路径进行元素绑定,则它可以工作。 下面是代码。

Master.controller.js

 onInit:function(){

 var oJsonModel = new sap.ui.model.json.JSONModel(" model/mockData/fruits.json");
 this.getView()。setModel(oJsonModel);
 this.oRouter = this.getOwnerComponent()。getRouter();

 },

 showFruitDet:function(oEvent){//这是单击主视图中的项目时发生的事件
 var sPath = oEvent.getParameter(" listItem")。getBindingContextPath();
 var indexOfFruit = sPath.split("/");
 indexOfFruit = indexOfFruit [indexOfFruit.length-1];
 this.oRouter.navTo(" detail",{id:indexOfFruit});
 }
 

Detail.controller.js

//在细节控制器中,我能够获取
//在主视图中单击了对象。
//现在,如果我取消注释onInit方法中的最后一条语句
//在Herculis方法中取消注释第4条语句,我得到
//详细信息页面上的输出。
//如果我保留这两个语句的注释,则
//详细页面为空。
//我的问题是,我是否必须再次分配JSON模型
//详细显示视图,然后将元素与路径绑定?
//我在这里想念什么吗?

 onInit:function(){
 this.router = this.getOwnerComponent()。getRouter();
 this.router.attachRoutePatternMatched(this.herculis,this);
//this.oJsonModel = new sap.ui.model.json.JSONModel(" model/mockData/fruits.json");
 },

 大力神:function(oEvent){
 var selectedItemIndex = oEvent.getParameter(" arguments")。id;
 var sPath ="/img/fruits/" + selectedItemIndex;
 var oForm = this.getView()。byId(" oFruitForm");
//this.getView().setModel(this.oJsonModel);
 this.getView()。bindElement(sPath);
//oForm.bindElement(sPath);
 }
 
付费偷看设置
发送
4条回答
xfwsx85
1楼 · 2020-09-02 05:46.采纳回答

您必须将模型放入组件中(this.setModel(******)放入组件中)

如果在主控制器中进行操作,则该模型仅可用于主视图

nice_wp
2楼-- · 2020-09-02 05:56

完美! 我现在将默认模型配置放在manifest.json中,并且可以正常工作。 谢谢。

骆驼绵羊
3楼-- · 2020-09-02 05:43

详细视图如何创建? 通过路由?

哎,真难
4楼-- · 2020-09-02 05:55

是否正确,在manifest.json中。

"路由":{
 "配置":{
 " routerClass":" sap.m.routing.Router",
 " viewType":" XML",
 " viewPath":" com.sunRoutingExample.view",
 " controlId":" parentView"
 },
 "路线":[
 {
 " pattern":"",
 " name":" master",
 "目标":["唐纳德"]
 },
 {
 " pattern":"/img/empty/{id}",
 " name":"详细信息",
 "目标":["唐纳德","王牌"]
 }
 ],
 "目标":{
 "唐纳德":{
 " viewName":" FruitsList",
 " viewId":" idMaster",
 " controlAggregation":" masterPages"
 },
 "王牌":{
 " viewName":" FruitsDetail",
 " viewId":" idDetail",
 " controlAggregation":" detailPages"
 }
 }
 }
 

一周热门 更多>