为什么这个渲染功能不起作用?

时间:2013-05-18 19:44:32

标签: javascript backbone.js

我一直在玩骨干并试图学习它。我暂时停留在这一点上。无法弄清楚以下代码有什么问题?

  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
   });

1 个答案:

答案 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