在WorkList类应用程序中未选择列表项

2020-09-09 17:54发布

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

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


SAP Gurus,您好,

我有一个小疑问。 我已经创建了一个类似于WorkList fiori的应用程序。 在一个屏幕上(使用SplitApp控件)有2个视图。主视图具有水果列表(使用的列表控件,并绑定了JSON模型)。 当我单击任何列表项时,第二个视图具有一个SimpleForm控件。

如果我单击"奇异果",则将表单输入与名称和价格绑定在一起。 因此, Kiwi 78 将出现在SimpleForm(第二视图)中。

问题是,我使用了 RouteMatchedHandler 方法来处理浏览器后退和前进按钮。 另外,对manifest.json的routing属性进行必要的更改。 一切正常

每当我单击第一个水果,然后单击第二个然后单击第三个水果时,相应的数据就会显示在第二个视图的SimpleForm输入中。 另外,"前进和后退"按钮可以正常工作(URL末尾即#fruits/1,#fruits/2,.......)已更改

但是,当我从第一个水果转到第二个水果,然后当我按浏览器返回时,理想情况下,列表项上的选择/突出显示也应更改,但选择没有得到 在第一视图的列表中更改。 为此,我将"选定项目"设置为:

oList.setSelectedItem(oList.getItems()[i]),如下所示

请帮助我解决问题。 非常感谢您的时间。

我已经为第二视图的控制器编写了以下代码:

此外,如果您需要参考其他文件,请查找附件的项目文件。 app-view.txt component-js .txt main-controller.txt main-view.txt manifest-json.txt model-creation.txt view2controller.txt view2.txt

 onInit:函数(){

//RouteMatchedHandler:每次页面路由/URL更改时,此方法都会触发
 this.oRouter = this.getOwnerComponent()。getRouter();
 this.oRouter.attachRoutePatternMatched(this.hercules,this);
 },

 大力神:函数(oEvent){
 var sPath ="/img/fruits" +"/" + oEvent.getParameter(" arguments")。mario;
 this.getView()。bindElement(sPath);


//获取列表对象
 var oMasterView = this.getView()。getParent()。getParent()。getMasterPages()[0];
 var oList = oMasterView.byId(" idList2");

 var fruitName = this.getView()。getModel()。getProperty(sPath).name;
 for(var i = 0; i 

    
        
          app-view.txt 
         (215乙)

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

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


SAP Gurus,您好,

我有一个小疑问。 我已经创建了一个类似于WorkList fiori的应用程序。 在一个屏幕上(使用SplitApp控件)有2个视图。主视图具有水果列表(使用的列表控件,并绑定了JSON模型)。 当我单击任何列表项时,第二个视图具有一个SimpleForm控件。

如果我单击"奇异果",则将表单输入与名称和价格绑定在一起。 因此, Kiwi 78 将出现在SimpleForm(第二视图)中。

问题是,我使用了 RouteMatchedHandler 方法来处理浏览器后退和前进按钮。 另外,对manifest.json的routing属性进行必要的更改。 一切正常

每当我单击第一个水果,然后单击第二个然后单击第三个水果时,相应的数据就会显示在第二个视图的SimpleForm输入中。 另外,"前进和后退"按钮可以正常工作(URL末尾即#fruits/1,#fruits/2,.......)已更改

但是,当我从第一个水果转到第二个水果,然后当我按浏览器返回时,理想情况下,列表项上的选择/突出显示也应更改,但选择没有得到 在第一视图的列表中更改。 为此,我将"选定项目"设置为:

oList.setSelectedItem(oList.getItems()[i]),如下所示

请帮助我解决问题。 非常感谢您的时间。

我已经为第二视图的控制器编写了以下代码:

此外,如果您需要参考其他文件,请查找附件的项目文件。 app-view.txt component-js .txt main-controller.txt main-view.txt manifest-json.txt model-creation.txt view2controller.txt view2.txt

 onInit:函数(){

//RouteMatchedHandler:每次页面路由/URL更改时,此方法都会触发
 this.oRouter = this.getOwnerComponent()。getRouter();
 this.oRouter.attachRoutePatternMatched(this.hercules,this);
 },

 大力神:函数(oEvent){
 var sPath ="/img/fruits" +"/" + oEvent.getParameter(" arguments")。mario;
 this.getView()。bindElement(sPath);


//获取列表对象
 var oMasterView = this.getView()。getParent()。getParent()。getMasterPages()[0];
 var oList = oMasterView.byId(" idList2");

 var fruitName = this.getView()。getModel()。getProperty(sPath).name;
 for(var i = 0; i 

    
        
          app-view.txt 
         (215乙)  
付费偷看设置
发送
2条回答
Nir深蓝
1楼-- · 2020-09-09 18:24

您好 PRATHAMESH

请先取消选择母版页列表中的所有项目 然后选择所需的那个。 请尝试以下代码以供参考。

 var oList = sap.ui.getCore()。byId(" yourlist");
  var oSelectedItem = oList.getSelectedItem();
//此操作取消选择项目,并允许您再次选择该项目
        if(oSelectedItem){
          oList.setSelectedItem(oSelectedItem,false);
        }
 

希望这会有所帮助...

谢谢-

Abhishek

Nir深蓝
2楼-- · 2020-09-09 18:37

您好,Prathamesh,

从您共享的每个屏幕快照来看,当您从母版页中的一个项目导航到另一个项目时,相应的详细信息将显示在"详细信息"页面上(应该没有整页刷新)。 如果未刷新整页,则不会激活浏览器后退按钮。

在Master Details应用程序中,如果整页正在刷新,则您可能需要检查此导航,据我所知,这不会发生 。

如果您仍然想处理浏览器后退按钮,请参考以下代码,这将有助于处理浏览器后退按钮并更新您的哈希导航。

 document.onmouseover = function()  {
     //您正在SAPUI5应用程序内部
      window.innerDocClick = true;
 }
 document.onmouseleave = function(){
    //您正在SAPUI5应用程序之外工作
     window.innerDocClick = false;
 }
 window.onhashchange = function(){
    如果(window.innerDocClick!= false){
       window.innerDocClick = false;
    }其他{
     //您点击了浏览器后退按钮
     //在此处处理导航
   }
 } 

请参考下面的演示应用程序以获得场景。

https://ui5.sap.com/test-resources/sap/m/demokit/master-detail/webapp/test/mockServer.html #/Objects/ObjectID_10

希望这会有所帮助。

谢谢-

Abhishek

一周热门 更多>