Javascript 在Backbone.js视图中多次引用div
我想知道最好的处理方法是什么。假设我在一个主干视图中的多个方法中引用了一个div,我不想每次都重新查询它 e、 g 引用它的首选方法是将其声明为对象吗?还是有更好的模式我不知道 e、 gJavascript 在Backbone.js视图中多次引用div,javascript,backbone.js,refactoring,Javascript,Backbone.js,Refactoring,我想知道最好的处理方法是什么。假设我在一个主干视图中的多个方法中引用了一个div,我不想每次都重新查询它 e、 g 引用它的首选方法是将其声明为对象吗?还是有更好的模式我不知道 e、 g 如果这是一种特殊情况,则在调用render时,可以获取对元素的引用: Backbone.View.extend({ render: function () { // do rendering stuff this.$overlay = this.$('#js-add-re
如果这是一种特殊情况,则在调用
render
时,可以获取对元素的引用:
Backbone.View.extend({
render: function () {
// do rendering stuff
this.$overlay = this.$('#js-add-review-overlay');
},
showReviewOverlay : function(evt) {
$(evt.currentTarget).prepend(this.$overlay.show());
}
});
出于某种原因,您不想使用
el
吗?@dbaseman覆盖只是页面中某个地方的一个隐藏div模板,我认为使用el只是用作我想捕获所有事件的div?也许我完全忽略了el
的要点?为什么这个。$
?jQuery对象$
是gloabl。因为这个。$
更安全。它的作用域是视图。它是类似$(,this.el)
的别名。因为将查询范围限制为视图将节省搜索整个文档的时间:^)如果我有一个render()
方法和一个initialize()
方法,我会在initialize还是render?onRender
中声明它。在呈现之前,选择器将返回[]
。
Backbone.View.extend({
overlay : { 'container' : $('#js-add-review-overlay') },
showReviewOverlay : function(evt) {
$(evt.currentTarget).prepend(this.container.overlay.show());
}
hideReviewOverlay : function(evt) {
$(evt.currentTarget).closest(this.container.overlay.hide());
}
});
Backbone.View.extend({
render: function () {
// do rendering stuff
this.$overlay = this.$('#js-add-review-overlay');
},
showReviewOverlay : function(evt) {
$(evt.currentTarget).prepend(this.$overlay.show());
}
});