backbone.js view marionette

backbone.js - marionette.js ve la diferencia entre onShow vs onRender?



view (4)

Bueno, este es el método de show en Marionette y explica la pregunta

show: function(view){ this.ensureEl(); var isViewClosed = view.isClosed || _.isUndefined(view.$el); var isDifferentView = view !== this.currentView; if (isDifferentView) { this.close(); } view.render(); if (isDifferentView || isViewClosed) { this.open(view); } this.currentView = view; Marionette.triggerMethod.call(this, "show", view); Marionette.triggerMethod.call(view, "show"); }

Soy nuevo en Marionette.js y mientras estoy refactorizando mi código Backbone.js existente, noté que hay dos devoluciones de llamada en la vista Marionette (itemview) que me parecían similares, es decir, onRender y onShow. ¿Cuál es la diferencia y la mejor manera de usarlos?

Sin embargo, mirando el código fuente, creo que los eventos "render" y "show" se generan dentro de "view initialize".

constructor: function(){ _.bindAll(this, "render"); var args = Array.prototype.slice.apply(arguments); Backbone.View.prototype.constructor.apply(this, args); Marionette.MonitorDOMRefresh(this); this.listenTo(this, "show", this.onShowCalled, this); }


Creo que hay algo que no es totalmente correcto en la respuesta de Vitaliy. El correcto será:

onShow: la vista en sí misma no desencadena el evento ''show''. Se dispara por una región. Por eso no se llamará en algunos casos.

onRender: este método se ejecuta cada vez que se renderiza la vista.

Tenga en cuenta que la ejecución de ''onRender'' no significa que el objeto se agregue realmente al DOM . Solo significa que se acaba de procesar (los datos llenaron la plantilla, usted tiene un esto. $ El para tratar, etc.)

Por otro lado, si se llama ''onShow'' porque el evento ''show'' se ha desencadenado desde una región, y como las regiones generalmente representan un elemento dentro del DOM, puede esperar que cuando se llame ''onShow'' , la vista sea de hecho añadido al DOM.


En la versión 3, los eventos de la región muestran y antes de: la demostración ya no se activa en la vista. Puede usar render y before: render eventos en la mayoría de los casos. Si necesita saber que la vista está en el DOM, puede usar attach o dom: refresh

info http://blog.marionettejs.com/2016/08/23/marionette-v3/index.html


onShow : la vista en sí misma no desencadena el evento ''show''. Se dispara por una región. Por eso no se llamará en algunos casos.

onRender : este método se ejecuta cada vez que se renderiza la vista.