sto lavorando con backbone.js costruzione di alcuni complessi visualizzare le relazioni, e mi chiedo se ci sono problemi dal punto di vista una performance JavaScript di fare qualcosa che assomiglia a questo:Nesting Vista all'interno Vista a spina dorsale 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();
}
});
Dove questo è un esempio molto semplice di un riferimento circolare tra due viste, in modo che eventi in una vista possano propagarsi facilmente lungo una catena di viste o mantenere qualsiasi riferimento agli oggetti nelle viste principali. Ci sono situazioni in cui questo sarebbe un problema, in particolare in relazione alle potenziali perdite con riferimenti agli elementi DOM in IE7 +, oppure esiste un'altra best practice raccomandata per referenziare le viste genitore.
Inoltre, ho capito che potevo semplicemente fare $ (this.el) .parent ('li'). RemoveClass ('selected'); in vista, non è questo il punto ... questo è solo un esempio molto semplice della domanda che ho sul riferimento circolare.
Questo suona come un buon metodo, suppongo che mi stia chiedendo anche perché sarebbe stato specificamente dannoso per la vista figlio avere una conoscenza della vista genitore? – tgriesser
Poiché l'oggetto figlio non è responsabile della creazione dell'oggetto padre, non dovrebbe esserne a conoscenza ed essere completamente indipendente. In pratica stai creando dipendenze non necessarie. –
Ma non avrebbe senso se ci fosse una dipendenza dall'oggetto genitore ... come se l'oggetto figlio non potesse esistere senza l'oggetto genitore - e che si potesse semplicemente cambiare quale oggetto era il "genitore" della vista piuttosto di dover ridefinire i binding e gli inneschi – tgriesser