SAPUI5路线导航,其中有从表选择中选择的行,以传递到第二个屏幕

2020-09-27 01:45发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我有一个带有2个屏幕的S...

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

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


你好

我有一个带有2个屏幕的SAPUI5应用程序,我试图将所选行从我的第一个屏幕传递到第二个屏幕,

但是我无法在第二个屏幕上显示数据,绑定上下文为空

您能告诉我编码中有什么问题吗?

这是我manifest.json的一部分

 {
     "路由":{
         " config":{
             " viewPath":" DI_Warehouse_Replenishment.view",
             " controlId":" V_Root",
             " viewLevel":1
             " controlAggregation":"页面",
             " routerClass":" sap.m.routing.Router"
         },
         "目标":{
             " Target_REHeader":{
                 " viewType":" XML",
                 " transition":" slide",
                 " clearAggregation":正确,
                 " viewName":" V_REHeader",
                 " viewLevel":1
             },
             " Target_REDetail":{
                 " viewType":" XML",
                 " transition":" slide",
                 " clearAggregation":正确,
                 " viewName":" V_REDetail",
                 " viewLevel":2
             }
         },
         "路线":[{
             " name":" Target_REHeader",
             " pattern":"",
             " titleTarget":"",
             " greedy":错误,
             " target":[" Target_REHeader"]
         },{
             " name":" Target_REDetail",
             " pattern":" Target_REDetail/{replPath}",
             " titleTarget":"",
             " greedy":错误,
             " target":[" Target_REDetail"]
         }]
     }
 }

 

主页视图xml

 
     <列>
         <!- ->
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
         <栏目>
             <标签/>
         
             <标签/>
         
     <项目>
         
             <单元格>
                 <!-<文本text =" {REPL> Itemline}"/>->
                 
                 
                 
                 
                 
                 
                 
                 
                 
                 
                 
                 
                 
                 
             
         

主页controller.js(我在传递到第二个屏幕之前将"/"替换为" R",然后在第二个屏幕中以另一种方式进行操作,因为我在路径中包含多个/这样

/items/25

 showSelected:function(evt){
 var oView = this.getView();
 如果(oView.byId(" ContentTable")。getSelectedItem()!== null){
     var o = oView.byId(" ContentTable")。getSelectedItem()。getBindingContext(" REPL")。getObject();
     var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
     var pathr = this.getView()。byId(" ContentTable")。getSelectedItem()。getBindingContext(" REPL")。getPath()。toString()。replace(/\//g," R");
     oRouter.navTo(" Target_REDetail",{
         replPath:路径
     });
 }其他{
     MessageBox.show("未选择行",sap.m.MessageBox.Icon.ERROR);
 }
 }
 });

 

第二页controller.js

 onInit:function(){
        //获取路由器信息
         var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
         oRouter.getRoute(" Target_REDetail")。attachPatternMatched(this._onObjectMatched,this);
         var oView = this.getView();
     },

 _onObjectMatched:函数(oEvent){
 var pathr = oEvent.getParameter(" arguments")。replPath.toString()。replace(/R/g,"/");
 this.getView()。bindElement({
 路径:路径,
 型号:" REPL"
 });
 alert(this.getView()。getBindingContext(" REPL")。getProperty(" EUsername")));
 },

 
5条回答
骆驼绵羊
2020-09-27 02:04

嗨,

您不必传递完整的路径,而只需传递所选行的键,而在第二个视图中使用键构建路径,请找到以下代码片段:

 var键= this.getView()。byId(" ContentTable")。getSelectedItem()。getBindingContext(" REPL")。getProperty(" KeyFieldName");
     oRouter.navTo(" Target_REDetail",{
         replPath:键
     }); 
 _onObjectMatched:function(){
     var key = oEvent.getParameter(" replPath")。key;
     var sObjectPath = this.getModel(" REPL")。createKey(" Objects",{
 KeyFieldName:键
 });
     this.getView()。bindElement({
          路径:"/" + sObjectPath,
          型号:" REPL"
     });
 } 

"对象"是实体集名称。

还要确保模型" REPL"是全局模型,并且在两个视图上都已设置。

此致

Rahul

一周热门 更多>