Backbone.js 下划线模板已从DOM中删除,因此可以';不能重复使用

Backbone.js 下划线模板已从DOM中删除,因此可以';不能重复使用,backbone.js,javascript,underscore.js,Backbone.js,Javascript,Underscore.js,我正在尝试使用一个简单的带主干的内联underline.js模板,并通过jQuery的html()方法从标记中提取模板 页面应该为配方模型返回的每个配方提供多个配方标注。它在第一个缩略图上工作,但在第二个缩略图上,似乎已从DOM中删除了标记,因此下划线无法呈现该标记,并在第913行使用str为null将其清除 对于模板,我有 <script type="text/html" id="user-recipe-rated-template"> <div class="u

我正在尝试使用一个简单的带主干的内联underline.js模板,并通过jQuery的
html()
方法从
标记中提取模板

页面应该为配方模型返回的每个配方提供多个配方标注。它在第一个缩略图上工作,但在第二个缩略图上,似乎已从DOM中删除了
标记,因此下划线无法呈现该标记,并在第913行使用
str为null将其清除

对于模板,我有

  <script type="text/html" id="user-recipe-rated-template">
    <div class="user-recipe-rated">
      <a class="thumb" href="<%= href %>"></a>
      <p><%= title %></p>
    </div>
  </script>
所以,我看到的是,
$(“#用户配方分级模板”)
存在于第一个缩略图上,一切正常。在第二种情况下,它返回一个空数组,下划线无法继续

我一直在尝试记忆html之类的字符串,这可能会奏效,但似乎应该有一种更干净的方法来实现这一点。我做错了什么


(我现在想使用内联模板,而不是外部JST,以保持简单-最好将模板嵌入页面中,靠近数据输入时加载的位置)

我看不出脚本标记应该消失的原因。您确定您没有在某个时候意外地覆盖它包含的dom元素或其他内容吗?我也是这么想的。检查以确保没有覆盖页面上某个地方该div的.html()。发布的代码看起来是正确的。观察那个div,看看它在哪里清空,也许有一些初始化代码或迭代代码正在清除div.yep,你们是对的。有一些代码(不是我的:)在呈现视图之前清空了容器。所以它也清空了模板谢谢-我有同样的错误,除了我在html文件中定义了模板,但我在模板之前包含了javascript,因此当我试图获取$('#myid).html()时,它还不存在,并返回空字符串。另外,如果要对多个视图使用同一模板,可能需要对其进行一次初始化,然后在每个视图渲染方法中仅使用该模板,或者可以在视图的初始化方法中为其指定引用。
var UserRecipeView = Backbone.View.extend({
    initialize : function() {
        this.template = _.template($("#user-recipe-rated-template").html());
    },

    render : function()
    {
        this.el = this.template({
            title: this.model.get("Title"),
            href: '#'+this.model.get('UserContentId'),
            image_src: this.model.get('ThumbnailSrc')
        });
        return this;
    }
});