SAPUI5 - Welche Methode wird aufgerufen, wenn eine Ansicht jedes Mal angezeigt wird? [Duplikat]

7

Ich möchte etwas Logik tun, bevor eine Ansicht jedes Mal angezeigt wird.Ich kann nicht mit vor der Rendering-Methode gehen, da es nur einmal aufgerufen wird, wenn die Ansicht erstellt und zum ersten Mal angezeigt wird.Pls helfen.Any Ideen?

    
Papu 22.02.2014, 23:06
quelle

5 Antworten

7

Warum wird die Methode vor dem Rendern eines Steuerelements nur einmal aufgerufen? Haben Sie einen Beispielcode?

Ich habe ein kurzes schmutziges Beispiel auf jsbin ( Ссылка ) erstellt, damit Sie eine haben ansehen. Es zeigt deutlich, dass onInit einmal aufgerufen wird, aber onBeforeRendering wird jedes Mal aufgerufen ...

Siehe auch dieses Snippet aus dem OpenUI5 SDK , das erklärt:

>
  

Lebenszyklus-Hooks

     

onInit () - Wird aufgerufen, wenn eine Ansicht instanziiert wird und ihre Steuerelemente (wenn   verfügbar) sind bereits erstellt. Kann verwendet werden, um die Ansicht vorher zu ändern   Es wird angezeigt, um Ereignishandler zu binden und andere einmalige Aktionen auszuführen   Initialisierung.

     

onExit () - Wird aufgerufen, wenn die Ansicht zerstört wird. Benutze diese um frei zu sein   Ressourcen und finalisieren Aktivitäten.

     

onAfterRendering () - Wird aufgerufen, wenn die Ansicht gerendert wurde (daher   sein HTML ist Teil des Dokuments). Post-Rendering-Manipulationen der   HTML kann hier gemacht werden. Dieser Hook ist derselbe, den SAPUI5 steuert   nach dem Rendern erhalten.

     

onBeforeRendering () - Wird vor der Ansicht des Controllers aufgerufen   neu gerendert. Sie würden onInit () für den Fall verwenden, dass der Hook sein soll   wird erst vor dem ersten Rendering aufgerufen.

     

Bei Controllern ohne View werden keine Lebenszyklus-Hooks aufgerufen.

    
Jason Scott 23.02.2014, 07:59
quelle
5

Für eine moderne SAPUI5-Anwendung im Fiori-Stil mit Component und zugehörigem routing können Sie immer eine Methode an Ihre Ansicht anhängen, die immer dann aufgerufen wird, wenn eine Übereinstimmung mit dem gelieferten Routenmuster für diese Ansicht besteht. Diese Route wurde historisch in metadata der Klasse Component angegeben, aber seit v1.30 wird sie in der Datei manifest.json deklariert.

In der Methode onInit Ihrer Ansicht können Sie Folgendes tun:

%Vor%

Sie haben also die Methode _onObjectMatched , die jedes Mal aufgerufen wird, wenn Sie sich in der Ansicht befinden. Hier könnten Sie Ihren gesamten Code platzieren, der ausgeführt werden sollte, bevor Ihre Ansicht gerendert wird.

%Vor%

Sie können dies auch für Ihre Zielseite verwenden. Die erste Ansicht hat normalerweise eine leere Zeichenfolge "" als ihr Routenmuster in manifest .

    
Kumar 10.10.2016 11:45
quelle
3

Ich habe das Problem mit onBeforeShow behoben. Vielen Dank für Ihre Bemühungen.

    
Papu 23.02.2014 17:37
quelle
3

Ein anderes Muster ist wie unten (mit Dank an Matbtt)

%Vor%

Die onDisplay-Funktion wird jedes Mal ausgelöst, wenn die Ansicht angezeigt wird. In meiner eigenen kleinen Erfahrung werden die On-Render-Ereignisse häufiger ausgelöst, als man zunächst annehmen würde.

    
Vanquished Wombat 12.11.2016 11:51
quelle
1

Ich kann Ihnen eine Antwort geben, aber nur in Bezug auf den alten Ansatz der Navigation in UI5. Aber vielleicht hast du das auch als Ausgangspunkt benutzt und hast das gleiche Problem wie ich.

Hier ein JSBin mit dem Controller, der die Navigation vom Master zur Detailansicht abwickelt - & gt; Ссылка

Dort können Sie den Anruf sehen:

%Vor%

Es löst sowohl das onBeforeRendering- als auch das onAfterRendering-Ereignis erneut aus.

Aber der Aufruf von to zum ersten Mal löst die Ereignisse zwei Mal aus, kümmern Sie sich darum.

    
michaelklopf 27.04.2015 14:51
quelle

Tags und Links