Javascript backbone.js/underline.js错误:没有方法';html';
当我尝试导入一个如下所示的模板时,我似乎遇到了backbone.js/underline.js的砖墙: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之前创建
<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)