我一直在玩骨干并试图学习它。我暂时停留在这一点上。无法弄清楚以下代码有什么问题?
render: function() {
this.$el.empty();
// render each subview, appending to our root element
_.each(this._views, function(sub_view) {
this.$el.append(sub_view.render().el); // Error on this line
});
答案 0 :(得分:11)
你有上下文问题。您引用的this
不包含您要查找的$el
。您可以通过声明指向适当self
的{{1}}变量来解决此问题。以下代码应该适合您。
this
旁注:当你正在学习骨干时,你应该知道文档重排的一个非常普遍的JavaScript问题。您将为集合中的每个模型渲染视图。它可能导致性能问题,特别是在旧计算机和移动设备上。您可以通过在render: function() {
var self = this; //Added this line to declare variable (self) that point to 'this'
this.$el.empty();
_.each(this._views, function(sub_view) {
self.$el.append(sub_view.render().el); //Used 'self' here instead 'this'
});
中呈现所有内容并将其附加一次来优化代码,而不是每次都更新DOM。这是一个例子:
container