2017-02-23 4 views
0

Ich habe zwei Ansichten: Login und Detail. Wenn ich mich anmelde und zur zweiten Ansicht gehe, möchte ich in der Konsole drucken: console.log("Hello World").Re-Ausführung onInit funktioniert nicht

Ich habe versucht, die console.log in der OnInit-Funktion zu schreiben, aber wenn ich abmelden und neu anmelden, wird die OnInit-Funktion nicht erneut ausgeführt. Weiß jemand, wie es funktioniert?

Ich habe den nächsten Code auch versucht, aber wenn ich mich abmelde, wird die console.log auch ausgeführt.

function onInit(){ 
    this._oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
    this._oRouter.attachRouteMatched(sayHelloWorld, this); 
} 

function sayHelloWorld(){ 
    console.log("HelloWorld"); 
} 

Antwort

0

Dies funktioniert wie erwartet. Die Methode onInit ist für einmalige Initialisierungen vorgesehen und wird daher nur einmal in der Lebensdauer einer Sicht aufgerufen. Sie könnten natürlich unsere Ansicht zerstören, wenn Sie sich abmelden, aber wenn Sie der Anwendung eine dritte Ansicht hinzufügen und sich darin bewegen, würde das wieder nicht funktionieren.

beste Lösung wäre, um Ihren Detail-Controller an eine bestimmten Route befestigen in onInit (unter der Annahme Name ist "Detail"):

this._oRouter.getRoute("detail").attachMatched(this.sayHelloWorld, this); 

oder im sayHelloWorld zu überprüfen, die Strecke brachte (unter der Annahme Name ist "Detail"):

sayHelloWorld : function(event) { 
    if (event.getParameter("name") === "detail") { 
     jQuery.sap.log.info("HelloWorld"); 
    } 
} 

Auf Anmerkung: Der Code, den Sie gepostet haben, sieht seltsam aus. Sind Sie sicher, dass Sie den Controller korrekt implementieren? Weitere Details finden Sie unter documentation.

Verwandte Themen