2017-01-12 8 views
0

ich habe eine Kontrolle wie untenComposite-Control-Ereignis löst keine

ich brauche das Ereignis ausgelöst geschlossen, wenn ich auf das Schließen-Symbol drücken klicken

sap.ui.define(["sap/ui/core/Control", 
      "sap/m/Carousel", 
      "sap/m/Panel", 
      "sap/m/Toolbar", 
      "sap/ui/core/Icon", 
      "sap/m/Label", 
      "sap/m/Button", 
      "sap/m/ToolbarSpacer"], function (Control,Carousel,Panel,Toolbar,Icon,Label,Button,ToolbarSpacer) { 
"use strict"; 
return Control.extend("com.example.Control", { 
    metadata : { 

     aggregations : { 

      _panel : { 
       type : "sap.m.Panel", 
       multiple: false, 
       visibility:'hiddden' 
      }    
     }, 
     events : { 
      closed : { 

      } 
     } 
    }, 
    renderer : function (oRM, oControl) { 
     oRM.write("<div"); 
     oRM.writeControlData(oControl); 
     oRM.addClass("sapUiSizeCompact"); 
     oRM.writeClasses(); 
     oRM.write(">"); 
     oRM.renderControl(oControl.getAggregation("_panel")); 
     oRM.write("</div>"); 
    }, 
    init : function() { 
     var that = this; 
     var _carousel = new Carousel({ 
      pages : [new Label({ 
       text : "Test" 
      }), 
      new Label({ 
       text : "Test" 
      })] 
     }); 
     var _closeIcon = new Icon({ 
      src : "sap-icon://decline", 
      press :jQuery.proxy(this.onCloseInfoWindow,this) 
     }); 
     var _toolBar = new Toolbar({ 
      content : [ 
         new Label({ 
          text :"Information" 
         }), 
         new ToolbarSpacer(), 
         _closeIcon, 
        ] 
     }); 
     var _panel = new Panel({ 
      headerToolbar : _toolBar 
     }); 
     _panel.addContent(_carousel); 
     this.setAggregation('_panel',_panel); 
    }, 

    onCloseInfoWindow : function(oEvent){ 

    } 
}); 
}); 

Die onCloseInfoWindow nicht die Presse Ereignis auslöst, wenn Klicken Sie auf Schließen Symbol

Muss ich einige hinzufügen das Symbol auch als Aggregation und muss rendern?

Antwort

0

Warum verwenden Sie press :jQuery.proxy(this.onCloseInfoWindow,this)? Ich habe dieses jQuery.proxy nie in ui5 benutzt. Für die enge Funktionsauslösung, könnten Sie tun

var _closeIcon = new Icon({ 
     src : "sap-icon://decline", 
     press : function(oEvent){ 
      this.fireClosed(oEvent); 
     }.bind(this) 
    }); 
+0

In der Presse Funktion dieses in Symbol Kontext ist nicht in Kontrolle Kontext so müssen wir Proxy – chiranjeevigk

+1

@chiranjeevigk der Bindung am Ende der Funktion den Umfang ändern von diesem. –

0

Haben Sie das closed Ereignis ausgelöst mögen, die Sie in Ihrem benutzerdefinierten Steuerelement erstellt haben?

den Code unten Verwenden Sie die geschlossene Veranstaltung von Ihrer individuellen Steuerung für den Aufruf:

onCloseInfoWindow : function(oEvent){ 
     //console.log('Called'); 
     this.fireClosed(oEvent); 
    } 

Ansicht XML: hier, Kontrolle mein Name für die Kontrolle ist.

<c:Control closed='onClose'/> 

-Controller:

onClose:function(oEvent) { 
     console.log('Closed Called!'); 
    } 
+0

Ja, aber onCloseInfoWindow ruft nicht an – chiranjeevigk

+0

Ihr Code ruft onCloseInfoWindow auf. Ich habe Ihren Code nicht geändert. Möglicherweise können Sie eine andere Version von UI5 ausprobieren, so dass die jQuery-Version anders ist, was möglicherweise das Problem verursacht. Erhalten Sie auch einen Fehler in der Konsole? –

+0

jetzt kam ich, um das Problem zu kennen, ist nicht Problem in benutzerdefinierten Steuerelement, das ich geschrieben habe, Problem ist das Hinzufügen zu Openlayer3 Overlay https://openlayers.org/en/latest/examples/overlay.html wo ich gegeben habe Element als benutzerdefinierte Steuerelement-ID, weshalb es nicht funktioniert – chiranjeevigk

Verwandte Themen