我与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