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.
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:
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.
Sie können dies auch für Ihre Zielseite verwenden. Die erste Ansicht hat normalerweise eine leere Zeichenfolge ""
als ihr Routenmuster in manifest
.
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.
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.
Tags und Links sapui5