Ich bin neu in dieser Welt und ich muss einige der Konzepte von Backbone und Marionette verstehen. Hier versuche ich einige der Konzepte zu erklären, die ich lerne. Es wäre großartig, ein Feedback zu ihnen zu haben.
Die Funktion render
definiert die Logik zum Rendern einer Vorlage. Wenn es fertig ist, wird der onRender
Callback aufgerufen. Ich nehme an, die gerenderte Ansicht wurde nicht an das DOM angehängt. Es besteht aus einem tagName
(der Standardwert ist div
), der die Vorlage enthält, die ich angehängt habe. Um dieses Tag explizit in das DOM einzufügen, muss es irgendwo angehängt werden. Liege ich falsch?
Im Allgemeinen mache ich Folgendes.
%Vor% Marionette erweitert Backbone um das Konzept der Regionen. Die Methode show
kann für eine Region aufgerufen werden, um eine bestimmte Ansicht darzustellen.
In diesem Fall wird die show
-Methode die Funktion render
selbst aufrufen und schließlich, wenn der Inhalt der Ansicht in das DOM eingefügt wird, wird onShow
für diese Ansicht aufgerufen. Ist es in Ordnung?
Von Marionette doc gibt es auch einen anderen Callback namens onDomRefresh
. Aus meinen Experimenten habe ich festgestellt, dass diese Methode vor onShow
aufgerufen wird. Meine Annahme ist also, dass die Ansicht noch nicht an das DOM angehängt wurde. Aber der Arzt sagt folgendes.
Wurde ausgelöst, nachdem die Ansicht gerendert wurde, wurde im DOM angezeigt über eine Marionette.Region, und wurde neu gerendert.
Könntest du ein paar Hinweise dazu geben?
Vielen Dank im Voraus.
Was es wert ist, glaube ich, dass alles, was du gesagt hast, mehr oder weniger korrekt ist.
Wenn Sie sich die Quelle anschauen (verfügbar hier - suchen Sie nach "DomRefresh"), werden die MonitorDOMRefresh-Bits gemischt zu jeder Ansicht und fügen Sie diese API hinzu:
%Vor% Also, alles, was passiert, ist das Anhängen von zwei Ereignis-Listenern an die Ansicht, und die Callbacks ( handleShow
/ handleRender
) setzen eine boolesche _isShown
oder _isRendered
und rufen triggerDomRefresh
auf, was sagt :
Also, los gehts ... onDomRefresh
wird immer aufgerufen, wenn die Ansicht gerendert, dargestellt und dann neu gerendert wurde.
Hoffe das hilft!
Tags und Links javascript backbone.js marionette backbone-views lifecycle