Javascript backbone.js/underline.js错误:没有方法';html';

Javascript backbone.js/underline.js错误:没有方法';html';,javascript,ruby-on-rails,backbone.js,Javascript,Ruby On Rails,Backbone.js,当我尝试导入一个如下所示的模板时,我似乎遇到了backbone.js/underline.js的砖墙: <script type="text/template" id="overview_template"> <div> Sample text </div> </script> 我不确定是什么导致了这种情况,但这让我发疯。您正在尝试将视图连接到现有元素,\overview\u container。但是,视图类肯定是在浏览器初始化DOM之前创建

当我尝试导入一个如下所示的模板时,我似乎遇到了backbone.js/underline.js的砖墙:

<script type="text/template" id="overview_template">
<div>
  Sample text
</div>
</script>

我不确定是什么导致了这种情况,但这让我发疯。

您正在尝试将视图连接到现有元素,
\overview\u container
。但是,视图类肯定是在浏览器初始化DOM之前创建的

由于模板存储在
#overview_container
,您大概不希望在该元素中呈现视图?尝试删除视图上的
el
属性,并将视图的元素附加到页面中所需的任何位置

另外,从
render
方法返回
this
是一种主干约定,因此您可以轻松地渲染和附加元素,如下所示:

$(document.body).append((new OverviewView()).render().el);
  render: function() {
    var template = _.template( $("#overview_template").html(), {} );
    this.$el.html(template);    
  }
如果愿意,可以在初始化器中
渲染
,但这不是标准做法。

不应该这样吗

this.$el.html(模板)

例如,jQuery包装的el.

.html()方法是jQuery对象的方法。使用this.el时,它是一个DOM对象。要获取jQuery对象,请使用此.el(由backbone.js jQuery对象缓存)或$(this.el)

因此,您的代码应该如下所示:

$(document.body).append((new OverviewView()).render().el);
  render: function() {
    var template = _.template( $("#overview_template").html(), {} );
    this.$el.html(template);    
  }

试一试

而不是

this.el.html(template)
this.$el.html(template) 
this.el.html(template)