2016-06-24 10 views
0

Ich habe eine XML-Ansicht mit einem Controller, die ich mit sap.ui.view() erstellen und dann zu einer Aggregation einer anderen Ansicht mit addDependent() hinzufügen. In der onInit() Funktion des Controllers habe ich keine ownercomponent (this.getOwnerComponent() === undefined //true), da ich initialisiere, bevor ich es als Aggregation hinzufüge.Welches Ereignis, um einen Listener hinzuzufügen, um informiert zu werden, wenn er als Aggregation hinzugefügt wird?

Jetzt dachte ich, einen Listener (attachEventOnce) hinzuzufügen und wenn zu einer Aggregation hinzugefügt, tun Sie das Zeug, das ich brauche.

Gibt es ein Ereignis "OwnerComponentChanged" oder etwas ähnliches? Noch wichtiger: Wie kann ich herausfinden, welche Veranstaltung es gibt und welche?

Some.controller.js

var oView = sap.ui.view({viewName : "com.example.app.view.dialog", type : "XML"}); 
this.getView().addDependent(oView); 

dialog.controller.js

(§§§ für das gesuchte Ereignis steht)

onInit : function(){ 
    if (this.getOwnerComponent()===undefined) //true 
    { 
     this.attachEventOnce("§§§", BaseController.prototype.doSomething, this); 
    } 
} 

Antwort

1

Soweit Wie ich gesehen habe, wird kein Ereignis ausgelöst, wenn eine Ansicht als a hinzugefügt wird abhängig.

In Ihrem Code rufen Sie jedoch die addDependent-Methode auf. Wenn Sie das tun, können Sie auch Ihre eigenen Ereignisse, Nachrichten oder Funktionen auslösen. Vielleicht ist es sogar besser, ein Versprechen zu lösen?

Um herauszufinden, welche Ereignisse für ein bestimmtes Steuerelement verfügbar sind, können Sie sich das SDK ansehen. Sie sind alle ziemlich gut dokumentiert dort. Insbesondere sind die Ansichten dokumentiert here, und die Liste der verfügbaren Ereignisse ist im Abschnitt "Zusammenfassung der Ereignisse" dokumentiert. Um diese Liste zu vervollständigen, können Sie auch sehen, welche Ereignisse von untergeordneten Komponenten unterhalb dieses Abschnitts geerbt werden.

Es ist natürlich auch immer möglich, die Liste der Ereignisse zu erweitern, indem Sie Ihre eigene Version des View-Steuerelements erstellen, das eine Unterklasse des tatsächlichen View-Steuerelements sein kann. Wenn Sie möchten, dass die addDependent-Methode ausgelöst und ein Ereignis ausgelöst wird, sollten Sie die Methode addDepdendent Ihrer Vesion überschreiben. In dieser Überschreibung können Sie die normale addDependent-Logik ausführen (unter Verwendung von apply) und danach den benutzerdefinierten Ereignishandler auslösen.

Sie finden sehr gute Informationen zum Erstellen von benutzerdefinierten Steuerelementen in step 34 des Sapui5-Durchlaufs.

Verwandte Themen