backbone.js Underscore.js模板变量名被转义,导致无法呈现该变量

qgelzfjb  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(108)

我正在尝试使用Underscore.js(Backbone.js应用程序)渲染模板。我遇到了以下问题,当我尝试获取模板字符串(使用.html(),.text())时,我试图渲染的模板中的一部分变量名被转义:
HTML档案:

<script type="text/template" id="tpl-note-item">
            <h1> 
                <%= noteTitle %>
            </h1>
        </script>

.js中的值:

var htmlString = $("#tpl-note-item").html();

        //   <h1> 
        //        &lt;%= noteTitle %>
        //    </h1>
        //
        console.log(htmlString); 

        var template = _.template(htmlString);

        html += template({ 
            noteTitle: note.get("title")
        });
        . . .

由于<%= noteTitle %>被转义为&lt;%= noteTitle %>,因此模板呈现为:
<%= noteTitle %>,而不是实际替换note.get("title")调用中的变量值。
这似乎是一个相当基本的模板用例,所以我相当肯定我遗漏了一些东西。任何帮助都将不胜感激。谢谢!

o2g1uqev

o2g1uqev1#

就在发布这篇文章几分钟后(花了一天的时间),我发现了这个问题:上下文中的HTML页面由我的Golang应用使用以下内容呈现:
template.Must(template.ParseFiles(<page.html>))
但是,我使用的是html/template包,它会自动转义任何正在呈现的html文件。切换到text/template就成功了。作为参考,相关的Golang帖子:Template unnecessarily escaping < to &lt; but not >

相关问题