Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在我的jQuery/js中包含下划线模板_Javascript_Templates_Underscore.js - Fatal编程技术网

Javascript 在我的jQuery/js中包含下划线模板

Javascript 在我的jQuery/js中包含下划线模板,javascript,templates,underscore.js,Javascript,Templates,Underscore.js,我可能已经阅读了所有关于下划线和模板的帖子,但似乎无法实现一些简单的功能。我无法在html中内联标记中的模板。我只想用从API获取数据的js脚本声明模板 我想说: <script type="text/template" id="eventView"> <div class="table-tour"> <% _.each(collection, function( model, id ) { %> <div cla

我可能已经阅读了所有关于下划线和模板的帖子,但似乎无法实现一些简单的功能。我无法在html中内联
标记中的模板。我只想用从API获取数据的js脚本声明模板

我想说:

<script type="text/template" id="eventView">
    <div class="table-tour">
        <% _.each(collection, function( model, id ) { %>
        <div class="row">
            <div class="cell date"><% var monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
            var str = model.datetime;  
            var dateArr = str.substring(0, str.indexOf("T")).split("-");                    
            var month = parseInt(dateArr[1],10);
            var day = parseInt(dateArr[2],10);
            print(monthNames[month-1] + " " + day); %></div>
            <div class="cell location"><%= model.formatted_location %></div>
            <div class="cell venue"><%= model.venue.name %></div>
            <div class="cell actions"><% if (model.ticket_status == "available") { %>
            <span><a href="<%= model.ticket_url %>" target="_blank">Tickets</a></span> <% } %>
            </div>
        </div>
        <% }); %>
    </div>
</script>

在这里:

// Display all dates:
var content;
if (data.length > 0)
    content = _.template( $( "script#eventView" ).html(), { "collection": data } );
else
{
    var notifyUrl = "http://www.bandsintown.com/" + artistName;
    content = "<p class='notify'>No " + mode + " dates. <a href='" + notifyUrl + "' target='_blank'>Notify me when " + artistName + " comes to my area.</a></p>";
}

$("#tour-dates").html(content);            
//显示所有日期:
var含量;
如果(data.length>0)
content=..template($(“脚本#事件视图”).html(),{“集合”:数据});
其他的
{
var notifyUrl=”http://www.bandsintown.com/“+艺人姓名;
content=“

无“+模式+”日期。

”; } $(“#巡演日期”).html(内容);
我一直试图将其添加到:

.template($(“script#eventView”).html(),{“collection”:data})

但是失败了

想知道是否有人有小费

谢谢。

您的意思是在html中存储ejs(或某些自定义)模板。你不能直接这样做。当浏览器试图解析时,它将无法识别其格式,因为它不支持ejs(或任何自定义模板)格式。可以将其转义值存储在javascript变量或数据属性中。但出于可读性考虑,我不建议这样做

您可能应该在javascript中调用ajax来获取该模板。若您希望预取该模板,那个么只需在脚本标记中进行ajax调用,以获取该模板并将其存储在javascript变量中的某个位置


如果模板语言是ejs,您可以使用插件以方便使用。

哪个版本的下划线?“失败”具体是什么意思?它是v1.4.4。很抱歉,“失败”,如中所示,我无法在js if语句中重新创建模板。您希望该模板以JavaScript字符串而不是
?格式。我也在探索一个
get()
方法,但如果我能在这里声明我的模板,那将是理想的:
.template($(((“脚本”#事件视图”).html(),{“集合”:data})var s=''…'.\。模板…
?或者使用
$.get
并在其回调中处理模板?