重新打开对话框错误

2020-09-02 16:47发布

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

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


您好,我正在尝试重新打开一个对话框,该对话框存在一些来自r3的问题,因此第一次可以正常使用,但是例如,如果我转到另一个应用程序并再次尝试打开对话框,则会出现 错误是因为我正在尝试添加和已存在的ID"添加具有重复ID'pe_Z1'的元素""

所以我不正确清洁this.formEncuesta.removeAllContent();吗? ???

这是我的代码

 abrirFragment:function(){

       尝试{

          this.formEncuesta.removeAllContent();
          如果(!this.formEncuesta){

         var sServiceURL ="/img/sap/opu/odata/sap/ZCLMM_GW_ENCUESTAPROVEEDOR_SRV";
         var oModel3 = new sap.ui.model.odata.ODataModel(sServiceURL,true);
         var data ="";
         var path ="/img/preguntasSet";
         var oJsonModel2 = new sap.ui.model.json.JSONModel();

         oModel3.read(path,null,null,false,function(oData,response){
           数据= response.body;
         });
         var mijson = JSON.parse(data);

         var jsonPreguntas = mijson;


           this.formEncuesta = new sap.ui.layout.form.SimpleForm(null,{
             标签:SpanXL:12,
             labelSpanL:12,
             labelSpanM:12,
             labelSpanS:12,
             AdjustLabelSpan:false,
             emptySpanXL:4,
             emptySpanL:4,
             emptySpanM:4,
             emptySpanS:0,
             XL:2列,
             L列:2,
             M列:2,
             singleContainerFullSize:false

           });

           this.preguntas = jsonPreguntas.d.results;
           为(this.preguntas中的var ele){
             this.formEncuesta.addContent(new sap.m.Label({
               文字:this.preguntas [ele] .Denomrespuesta,
               宽度:" 500px"
             }));
             如果(this.preguntas [ele] .Tpans ===" A1"){
               var select = new sap.m.ActionSelect({
                 id:" pe _" + this.preguntas [ele] .Idpreg,
                 宽度:" 100%"
               });
               var oItem = new sap.ui.core.Item({
                 文字:" SI",
                 键:" SI"
               });
               select.insertItem(oItem,0);

               var oItem = new sap.ui.core.Item({
                 文字:"否",
                 关键:"否"
               });
               select.insertItem(oItem,1);
               this.formEncuesta.addContent(select);
             }否则,如果(this.preguntas [ele] .Tpans ===" A2"){
               this.formEncuesta.addContent(new sap.m.Input({
                 id:" pe _" + this.preguntas [ele] .Idpreg,
                 类型:sap.m.InputType.Text,
                 maxLength:80,
                 placeHolder:"",
                 宽度:" 100%"
               }));
             }否则,如果(this.preguntas [ele] .Tpans ===" A3"){
               this.formEncuesta.addContent(new sap.m.Input({
                 id:" pe _" + this.preguntas [ele] .Idpreg,
                 类型:sap.m.InputType.Number,
                 placeHolder:"",
                 宽度:" 100%"
               }));
             }否则,如果(this.preguntas [ele] .Tpans ===" A4"){



               var sServiceURL2 ="/img/sap/opu/odata/sap/ZCLMM_GW_ENCUESTAPROVEEDOR_SRV";
               var oModel32 = new sap.ui.model.odata.ODataModel(sServiceURL,true);
               var data2 ="";
               var path ="/img/matchcoderespuestaSet?$ filter = Idpreg eq'" + this.preguntas [ele] .Idpreg +"'和Tipo eq'" + this.preguntas [ele] .Tpans +"'";
               var oJsonModel22 = new sap.ui.model.json.JSONModel();

               oModel32.read(path,null,null,false,function(oData,response){
                 data2 = response.body;
               });
               var mijson2 = JSON.parse(data2);

               var respuestaMatch = mijson2;



               this.matchcode = respuestaMatch.d.results;
               var select = new sap.m.ActionSelect({
                 id:" pe _" + this.preguntas [ele] .Idpreg
               });
               为(this.matchcode中的var ele2){
                 var oItem = new sap.ui.core.Item({
                   文字:this.matchcode [ele2] .Respuesta,
                   密钥:this.matchcode [ele2] .Respuesta
                 });
                 select.insertItem(oItem,ele2);
               }

               this.formEncuesta.addContent(select);

             }
           }

           this.formEncuesta.addContent(new sap.m.Label({
             文字:""
           }));
           this.formEncuesta.addContent(new sap.m.Button({
             文字:" Aceptar",
             类型:"接受",
             按下:function(){
               this.obtenerValoresEncuesta();
             } .bind(this)
           }));
           this.formEncuesta.addContent(new sap.m.Button({
             文字:" Cancelar",
             类型:"拒绝",
             按下:function(){
               this.dialogEncuesta.close();
             } .bind(this)
           }));



         如果(!this.dialogEncuesta){
           this.dialogEncuesta = sap.ui.xmlfragment(" solicitudCreacionPedido.view.fragments.encuesta",this);
         }

         this.dialogEncuesta.addContent(this.formEncuesta);


         }

        //if(!this.dialogEncuesta){
        //this.dialogEncuesta = sap.ui.xmlfragment(" solicitudCreacionPedido.view.fragments.encuesta",this);
        //this.dialogEncuesta.addContent(this.formEncuesta);
        //}

         this.dialogEncuesta.open();

       } catch(err){

         MessageBox.error("错误提示"。);
         console.log(err);
         返回false;

       }

     },

 

(23.1 kB)

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

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


您好,我正在尝试重新打开一个对话框,该对话框存在一些来自r3的问题,因此第一次可以正常使用,但是例如,如果我转到另一个应用程序并再次尝试打开对话框,则会出现 错误是因为我正在尝试添加和已存在的ID"添加具有重复ID'pe_Z1'的元素""

所以我不正确清洁this.formEncuesta.removeAllContent();吗? ???

这是我的代码

 abrirFragment:function(){

       尝试{

          this.formEncuesta.removeAllContent();
          如果(!this.formEncuesta){

         var sServiceURL ="/img/sap/opu/odata/sap/ZCLMM_GW_ENCUESTAPROVEEDOR_SRV";
         var oModel3 = new sap.ui.model.odata.ODataModel(sServiceURL,true);
         var data ="";
         var path ="/img/preguntasSet";
         var oJsonModel2 = new sap.ui.model.json.JSONModel();

         oModel3.read(path,null,null,false,function(oData,response){
           数据= response.body;
         });
         var mijson = JSON.parse(data);

         var jsonPreguntas = mijson;


           this.formEncuesta = new sap.ui.layout.form.SimpleForm(null,{
             标签:SpanXL:12,
             labelSpanL:12,
             labelSpanM:12,
             labelSpanS:12,
             AdjustLabelSpan:false,
             emptySpanXL:4,
             emptySpanL:4,
             emptySpanM:4,
             emptySpanS:0,
             XL:2列,
             L列:2,
             M列:2,
             singleContainerFullSize:false

           });

           this.preguntas = jsonPreguntas.d.results;
           为(this.preguntas中的var ele){
             this.formEncuesta.addContent(new sap.m.Label({
               文字:this.preguntas [ele] .Denomrespuesta,
               宽度:" 500px"
             }));
             如果(this.preguntas [ele] .Tpans ===" A1"){
               var select = new sap.m.ActionSelect({
                 id:" pe _" + this.preguntas [ele] .Idpreg,
                 宽度:" 100%"
               });
               var oItem = new sap.ui.core.Item({
                 文字:" SI",
                 键:" SI"
               });
               select.insertItem(oItem,0);

               var oItem = new sap.ui.core.Item({
                 文字:"否",
                 关键:"否"
               });
               select.insertItem(oItem,1);
               this.formEncuesta.addContent(select);
             }否则,如果(this.preguntas [ele] .Tpans ===" A2"){
               this.formEncuesta.addContent(new sap.m.Input({
                 id:" pe _" + this.preguntas [ele] .Idpreg,
                 类型:sap.m.InputType.Text,
                 maxLength:80,
                 placeHolder:"",
                 宽度:" 100%"
               }));
             }否则,如果(this.preguntas [ele] .Tpans ===" A3"){
               this.formEncuesta.addContent(new sap.m.Input({
                 id:" pe _" + this.preguntas [ele] .Idpreg,
                 类型:sap.m.InputType.Number,
                 placeHolder:"",
                 宽度:" 100%"
               }));
             }否则,如果(this.preguntas [ele] .Tpans ===" A4"){



               var sServiceURL2 ="/img/sap/opu/odata/sap/ZCLMM_GW_ENCUESTAPROVEEDOR_SRV";
               var oModel32 = new sap.ui.model.odata.ODataModel(sServiceURL,true);
               var data2 ="";
               var path ="/img/matchcoderespuestaSet?$ filter = Idpreg eq'" + this.preguntas [ele] .Idpreg +"'和Tipo eq'" + this.preguntas [ele] .Tpans +"'";
               var oJsonModel22 = new sap.ui.model.json.JSONModel();

               oModel32.read(path,null,null,false,function(oData,response){
                 data2 = response.body;
               });
               var mijson2 = JSON.parse(data2);

               var respuestaMatch = mijson2;



               this.matchcode = respuestaMatch.d.results;
               var select = new sap.m.ActionSelect({
                 id:" pe _" + this.preguntas [ele] .Idpreg
               });
               为(this.matchcode中的var ele2){
                 var oItem = new sap.ui.core.Item({
                   文字:this.matchcode [ele2] .Respuesta,
                   密钥:this.matchcode [ele2] .Respuesta
                 });
                 select.insertItem(oItem,ele2);
               }

               this.formEncuesta.addContent(select);

             }
           }

           this.formEncuesta.addContent(new sap.m.Label({
             文字:""
           }));
           this.formEncuesta.addContent(new sap.m.Button({
             文字:" Aceptar",
             类型:"接受",
             按下:function(){
               this.obtenerValoresEncuesta();
             } .bind(this)
           }));
           this.formEncuesta.addContent(new sap.m.Button({
             文字:" Cancelar",
             类型:"拒绝",
             按下:function(){
               this.dialogEncuesta.close();
             } .bind(this)
           }));



         如果(!this.dialogEncuesta){
           this.dialogEncuesta = sap.ui.xmlfragment(" solicitudCreacionPedido.view.fragments.encuesta",this);
         }

         this.dialogEncuesta.addContent(this.formEncuesta);


         }

        //if(!this.dialogEncuesta){
        //this.dialogEncuesta = sap.ui.xmlfragment(" solicitudCreacionPedido.view.fragments.encuesta",this);
        //this.dialogEncuesta.addContent(this.formEncuesta);
        //}

         this.dialogEncuesta.open();

       } catch(err){

         MessageBox.error("错误提示"。);
         console.log(err);
         返回false;

       }

     },

 

(23.1 kB)
付费偷看设置
发送
2条回答
南山jay
1楼-- · 2020-09-02 17:12

您应该使用addDependent方法。 因此,一旦离开该fiori应用程序,该对话框将被框架自动销毁。 在某些特殊情况下,您需要手动销毁它,并在视图的onExit函数中将该值设置为null。

但是对于您的情况,您可以使用addDepenedent函数。

https://sapui5.hana.ondemand.com/1.32.16/docs/guide/ 4da72985139b4b83b5f1c1e0c0d2ed5a.html

问候,

马赫什语

槿木_熙
2楼-- · 2020-09-02 17:16

Naoto Amari 您可以在此处粘贴console.log映像吗。.

一周热门 更多>