Backbone.js将脚本/模板信息移动到js文件中

时间:2013-10-10 06:11:15

标签: javascript html templates backbone.js underscore.js

我的HTML中有以下代码块作为我用于Backbone的模板。但是,我不确定如何将其移动到JS文件中,因此我的HTML文件中不会有内联javascript。我在.erb文件中使用这些问题时遇到了一些问题,我想将javascript部分移动到javascript文件中,不幸的是我不知道如何将脚本类型更改为javascript类型,同时保持我的模板。

<script type="text/template" id="lesson-template">
    <span id="lesson-title"><%= tracks[0].title %></span>
    <select class="sel">
        <% _.each(tracks, function(track) { %>
            <option value="<%= track.id %>"><%= track.title %></option>
        <% }); %> 
    </select>
    <p id="tracktext"><%=  tracks[0].text %></p>
</script>

非常感谢帮助!

2 个答案:

答案 0 :(得分:1)

假设你已经包含下划线,那很简单。像这样:

var template = _.template(
    '<span id="lesson-title"><%= tracks[0].title %></span>' +
    '<select class="sel">' +
        '<% _.each(tracks, function(track) { %>' +
            '<option value="<%= track.id %>"><%= track.title %></option>' +
        '<% }); %>' + 
    '</select>' +
    '<p id="tracktext"><%=  tracks[0].text %></p>'
);

然后,只需从template变量访问它。

答案 1 :(得分:0)

将模板移动到javascript代码有许多缺点:丑陋的连接,代码基本上与功能代码交织在一起。

如果问题的根源与erb冲突,您可以:

  • 不使用erb服务器端。你真的需要它来输出你的JS模板吗?
  • 重新定义下划线_.template开始和结束标记

如果您选择第二个选项,则_.template documentation中会提供所有必要信息。