tgr*_*ser 11 javascript jquery dom circular-reference backbone.js
我正在使用backbone.js构建一些复杂的视图关系,我想知道从javascript性能角度看是否存在任何问题:
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();
}
});
Run Code Online (Sandbox Code Playgroud)
这是两个视图之间循环引用的一个非常简单的示例,为了使一个视图中的事件容易在视图链中向上传播,或者保持对父视图中对象的任何引用.是否有任何情况会出现问题,特别是与IE7 +中DOM元素引用的潜在泄漏有关,或者是否有另一个推荐的最佳实践来引用父视图.
另外,我明白我可以做$(this.el).parent('li').removeClass('selected'); 在视图中,这不是重点......这只是我对循环引用的一个非常简单的例子.
Kyl*_*ers 15
让父视图负责子视图并不是一个坏主意,并且在骨干网中是一种非常常见的情况.我在上面的代码中看到的问题是子视图知道其父视图.我建议在viewTwo中使用自定义事件,并让viewOne绑定到这些事件,然后相应地做出响应.
通过使用trigger()方法和bind()方法,骨干很容易实现.
| 归档时间: |
|
| 查看次数: |
6251 次 |
| 最近记录: |