我有一些代码定义了加载网页后加载的骨干视图。 JavaScript可能在DOM完全加载之前执行。如果在运行定义视图的代码时,变为$ el的dom元素不可用,这是一个问题吗?
以编程方式我有这样的事情:
var view = Backbone.View.extend({
el: jQuery("#test")
events: {
}
render: function() {
this.$el.html();
}
//other view code
});
return view;
//一段时间过去了 //使用上面呈现的视图我现在调用:
view.render()
问题是当调用render方法时,$ el是未定义的。这是因为当执行第一个代码块时#test尚未加载到DOM中。所以;当调用函数Backbone.View.extend时,必须加载'el'元素?
这是通过AMD加载的骨干应用程序的上下文。第一个代码块在一个模块中。在加载DOM之前,该模块是“必需的”。这是个常见的问题吗?通常如何处理?
由于
答案 0 :(得分:0)
el不应该是jQuery对象,而应该只是一个选择器,$ el将是该选择器的jQuery对象。您还必须在初始化时找到您指定为el的ID。所以是的,元素必须在dom之前才能成为视图的元素。
如果您在创建Backbone视图之前没有创建/填充视图,您可以执行类似这样的操作,让骨干为您创建html标记等:
var view = Backbone.View.extend({
tagName: 'div',
id: 'test',
events: {
},
render: function() {
this.$el.html();
},
//other view code
});
然后,您可以使用模板填充渲染功能中的视图。
简答:是的,初始化视图时必须将视图元素加载到DOM中。