如何使用两个JSON模型在XML片段中调用它们?

2020-09-22 14:28发布

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

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


嗨,伙计们!

在SAPUI5的这种漏洞方面,我是一种新事物。 我要做的是像上面显示的一组对话框。

为了做到这一点,我有三个代码,第一个是下面显示的我的JS控制器

 var oModel = new sap.ui.model.json.JSONModel({
             "国家/地区":[
                 {" C":"墨西哥"," D":" MX"},
                 {" C":"阿根廷"," D":" AR"},
                 {" C":"玻利维亚"," D":" BO"},
                 {" C":" Belice"," D":" BC"}
                 ]

         });
                 this.getView()。setModel(oModel);
                
         var oModel1 = new sap.ui.model.json.JSONModel({
                     "帐户":[
                {" PR":" GRR Proveedores Extranjeros"," DE":" 2PEX"},
                {" PR":" GRR Proveedores Nacionales"," DE":" 1PNA"},
                {" PR":" GRR Proveedores Fletes"," DE":" 3PFL"},
                {" PR":" GRR Proveedores Arrendamiento"," DE":" 5PAR"}
                                 ]
                  });
                    this.getView()。setModel(oModel1," providers");  var l1 = new sap.m.StandardListItem({
                 标题:" Por Grupo de Cuentas",
                 类型:"有效",
                 按下:function()
                 {
                         如果(!this._oDialog){
 this._oDialog = sap.ui.xmlfragment(" demo.views.ByAccountsGroup",this);
                    this._oDialog.setModel(this.getView()。getModel());
                         }
                 } .bind(this)

         });

         var l2 = new sap.m.StandardListItem({
                 标题:" PorPaís",
                 类型:"有效",
                 按下:function()
                 {
                     如果(!this._oDialog){
      this._oDialog = sap.ui.xmlfragment(" demo.views.ByCountry",this);
                         this._oDialog.setModel(this.getView()。getModel());
                     }
                     this._oDialog.open();
                 } .bind(this)

         });
 

我的片段是这样的:

 
     <选择对话框
         contentWidth =" 450px"
         contentHeight =" 300px"
         noDataText ="没有证明自己的行为。"
         title =" Por grupo de cuentas"
         search =" handleSearch"
         Confirm =" handleClose"
         cancel =" handleClose"
         multiSelect =" true"
         items =" {
             路径:" providers>/account"
         }">
         
     
 

 
     <选择对话框
         contentWidth =" 450px"
         contentHeight =" 300px"
         noDataText ="没有证明自己的行为"
         title =" PorPaís"
         search =" handleSearch"
         Confirm =" handleClose"
         cancel =" handleClose"
         multiSelect =" true"
         items =" {
             路径:" providers>/country"
         }">
         
     
  

当我运行程序时,它仅显示一个JSON模型,例如即使我按菜单中的第二个选项(仅显示帐户组)也仅显示国家(我尝试过很多事情,但我做不到)

希望你们能帮助我!

dialog.jpg (86.5 kB)

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

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


嗨,伙计们!

在SAPUI5的这种漏洞方面,我是一种新事物。 我要做的是像上面显示的一组对话框。

为了做到这一点,我有三个代码,第一个是下面显示的我的JS控制器

 var oModel = new sap.ui.model.json.JSONModel({
             "国家/地区":[
                 {" C":"墨西哥"," D":" MX"},
                 {" C":"阿根廷"," D":" AR"},
                 {" C":"玻利维亚"," D":" BO"},
                 {" C":" Belice"," D":" BC"}
                 ]

         });
                 this.getView()。setModel(oModel);
                
         var oModel1 = new sap.ui.model.json.JSONModel({
                     "帐户":[
                {" PR":" GRR Proveedores Extranjeros"," DE":" 2PEX"},
                {" PR":" GRR Proveedores Nacionales"," DE":" 1PNA"},
                {" PR":" GRR Proveedores Fletes"," DE":" 3PFL"},
                {" PR":" GRR Proveedores Arrendamiento"," DE":" 5PAR"}
                                 ]
                  });
                    this.getView()。setModel(oModel1," providers");  var l1 = new sap.m.StandardListItem({
                 标题:" Por Grupo de Cuentas",
                 类型:"有效",
                 按下:function()
                 {
                         如果(!this._oDialog){
 this._oDialog = sap.ui.xmlfragment(" demo.views.ByAccountsGroup",this);
                    this._oDialog.setModel(this.getView()。getModel());
                         }
                 } .bind(this)

         });

         var l2 = new sap.m.StandardListItem({
                 标题:" PorPaís",
                 类型:"有效",
                 按下:function()
                 {
                     如果(!this._oDialog){
      this._oDialog = sap.ui.xmlfragment(" demo.views.ByCountry",this);
                         this._oDialog.setModel(this.getView()。getModel());
                     }
                     this._oDialog.open();
                 } .bind(this)

         });
 

我的片段是这样的:

 
     <选择对话框
         contentWidth =" 450px"
         contentHeight =" 300px"
         noDataText ="没有证明自己的行为。"
         title =" Por grupo de cuentas"
         search =" handleSearch"
         Confirm =" handleClose"
         cancel =" handleClose"
         multiSelect =" true"
         items =" {
             路径:" providers>/account"
         }">
         
     
 

 
     <选择对话框
         contentWidth =" 450px"
         contentHeight =" 300px"
         noDataText ="没有证明自己的行为"
         title =" PorPaís"
         search =" handleSearch"
         Confirm =" handleClose"
         cancel =" handleClose"
         multiSelect =" true"
         items =" {
             路径:" providers>/country"
         }">
         
     
  

当我运行程序时,它仅显示一个JSON模型,例如即使我按菜单中的第二个选项(仅显示帐户组)也仅显示国家(我尝试过很多事情,但我做不到)

希望你们能帮助我!

dialog.jpg (86.5 kB)
付费偷看设置
发送
3条回答
shere_lin
1楼 · 2020-09-22 15:11.采纳回答

你好

您需要看的三点内容,

1,this._oDialog对于两个片段都是相同的,无论哪个片段首先打开,该片段都会一直打开,因此需要两个不同的变量

2,您的片段绑定是根据一个属于单个模型(提供者)的json数据完成的,因此您只能使用一个模型(oModel1)并按以下方式修改数据-

 var oModel1 = new sap.ui.model.json.JSONModel({
     "帐户":[{
         " PR":" GRR Proveedores Extranjeros",
         " DE":" 2PEX"
     },{
         " PR":" GRR Proveedores Nacionales",
         " DE":" 1PNA"
     },{
         " PR":" GRR被证明的长笛",
         " DE":" 3PFL"
     },{
         " PR":" GRR Proveedores Arrendamiento",
         " DE":" 5PAR"
     }],
     "国家/地区":[{
         " C":"墨西哥",
         " D":" MX"
     },{
         " C":"阿根廷",
         " D":" AR"
     },{
         " C":"玻利维亚",
         " D":" BO"
     },{
         " C":" Belice",
         " D":" BC"
     }]
 });
 

然后您的代码将正常工作。

3,对于两个模型,请执行以下操作,

this.getView()。setModel(oModel," countryModel");

this.getView()。setModel(oModel1," providers");

,并将绑定路径更改为

路径:" countryModel>/country"和

路径:" providers>/帐户"


可能会有所帮助。


Nan4612
2楼-- · 2020-09-22 15:16

非常感谢!

问题是我为this_oDialog使用了相同的名称,并且正如您告诉我的那样,我在第二个函数中更改了变量的名称并起作用了!

clever101
3楼-- · 2020-09-22 15:27

尝试给出两个不同的模型名称 对于两者

您没有提及国家的任何型号名称

 var oModel = newsap.ui.model.json.JSONModel({" country":[{" C":"墨西哥"," D":" MX"},{" C":"阿根廷","  D":" AR"},{" C":"玻利维亚"," D":" BO"},{" C":" Belice"," D":" BC"}]}));
                 this.getView()。setModel(oModel); 

一周热门 更多>