我與Backbone.js的建立一些複雜的視圖關係的工作,如果有從做一些看起來像這樣的JavaScript性能的角度來看什麼問題我想知道:嵌套意見骨幹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();
}
});
如果是這種兩個視圖之間的循環引用的一個非常簡單的例子中,爲了有事件在一個視圖中容易向上傳播的視圖的鏈,或保持在父視圖的對象的任何引用。是否有任何情況下,這會成爲一個問題,特別是與IE7 +中DOM元素引用的潛在泄漏相關的問題,還是有其他推薦的用於引用父視圖的最佳做法。
而且,據我所知,我可能只是這樣做$(this.el).parent( '禮')removeClass( '選擇')。鑑於兩個,這不是重點......這只是我對循環引用問題的一個非常簡單的例子。
這聽起來像一個很好的方法,我想我也想知道爲什麼它會特別有害的孩子視圖有父視圖的知識嗎? – tgriesser
因爲子對象不負責創建父對象,所以它不應該知道它並且完全獨立。你基本上正在創造不必要的依賴。 –
但是,如果父對象存在依賴關係,就不會有意義...就像如果沒有父對象的情況下子對象不能存在 - 並且您可以切換哪個對象是視圖的「父對象」比必須重新定義綁定和觸發 – tgriesser