estoy trabajando con Backbone.js la construcción de algunas complejas relaciones de vista, y me pregunto si hay algún problema desde un punto de vista el rendimiento de JavaScript de hacer algo que se parece a esto:Vistas de anidamiento dentro de Vistas en backbone.js
var viewOne = Backbone.View.extend({
tagName : 'li',
initialize : function() {
this.v2 = new viewTwo({parent:this});
},
clickHideOne : function() {
$(this.el).removeClass('selected');
}
});
var viewTwo = Backbone.View.extend({
tagName : 'a',
initialize : function() {
this.bind('click', this.clickHide, this);
},
clickHide(){
$(this.el).removeClass('selected');
this.options.parent.clickHideOne();
}
});
Donde este es un ejemplo muy simple de una referencia circular entre dos vistas, para que los eventos en una vista se propaguen fácilmente por una cadena de vistas o mantengan referencias a los objetos en las vistas principales. ¿Hay alguna situación en la que esto sería un problema, específicamente en relación con las posibles filtraciones con referencias de elementos DOM en IE7 +, o hay otra práctica recomendada recomendada para hacer referencia a las vistas principales?
Además, entiendo que solo podría hacer $ (this.el) .parent ('li'). RemoveClass ('selected'); en vista Dos, ese no es el punto ... esto es solo un ejemplo muy simple de la pregunta que tengo sobre la referencia circular.
Parece un buen método, supongo que también me pregunto por qué sería especialmente dañino para la vista secundaria tener conocimiento de la vista principal. – tgriesser
Como el objeto secundario no es responsable de la creación del objeto primario, no debería tener conocimiento de él y ser completamente independiente. Básicamente estás creando dependencias innecesarias. –
Pero, ¿no tendría sentido si hubiera una dependencia en el objeto principal ... como si el objeto hijo no pudiera existir sin el objeto principal, y que pudieras simplemente cambiar qué objeto era el "padre" de la vista en lugar de que tener que volver a definir los enlaces y disparadores – tgriesser