Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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 下划线模板错误:函数(n){返回a.call(this,n,h)}_Javascript_Templates_Underscore.js_Underscore.js Templating - Fatal编程技术网

Javascript 下划线模板错误:函数(n){返回a.call(this,n,h)}

Javascript 下划线模板错误:函数(n){返回a.call(this,n,h)},javascript,templates,underscore.js,underscore.js-templating,Javascript,Templates,Underscore.js,Underscore.js Templating,我正在学习一个关于下划线的视频教程,在我达到将逻辑放入模板的程度之前,一切都很顺利 SampleData.js包含学生数组: var students = [ { "firstname": "Woody", "lastname" : "Johnson", "school" : "Thoreau", "grade" : 12, "midterm_score": 75, "final_score"

我正在学习一个关于下划线的视频教程,在我达到将逻辑放入模板的程度之前,一切都很顺利

SampleData.js包含学生数组:

var students = [
    {
        "firstname": "Woody",
        "lastname" : "Johnson",
        "school" : "Thoreau",
        "grade" : 12,
        "midterm_score": 75,
        "final_score": 85
    },
    {
        "firstname" : "Jerry",
        "lastname" : "Jones",
        "school" : "Thoreau",
        "grade" : 10,
        "midterm_score": 50,
        "final_score": 65       
    },
    {
        "firstname" : "Bill",
        "lastname" : "Parcells",
        "school" : "Franklin",
        "grade" : 12,
        "midterm_score": 82,
        "final_score": 91       
    },
    {
        "firstname" : "Rex",
        "lastname" : "Ryan",
        "school" : "Franklin",
        "grade" : 11,
        "midterm_score": 60,
        "final_score": 67       
    }];
HTML:


使用下划线模板
studentRec先生{
边框:1px实心#777;
保证金:4pt;
填充量:4pt;
字号:14pt;
背景色:#ccc;
}
.通过考试的学生{
背景颜色:浅绿色;
}
.失败的学生{
背景颜色:粉红色;
}
函数appendTemplateData(数据字符串){
var container=document.getElementById(“容器”);
container.innerHTML=container.innerHTML+dataString;
}
var studentInfo 1=“”+
"" +
“名称:”+
“学校:”+
"";
window.addEventListener(“加载”,函数(e){
var result=uu.template(studentinfo,students);
追加模板数据(结果);
});
使用下划线模板
学生资料:
结果:

函数(n){返回一个调用(this,n,h)}

知道我为什么会犯这个错误吗?我尝试将模板提取到
中,如..
,我得到: Uncaught TypeError:undefined不是下划线函数。js:1304 h、 模板下划线.js:1304 (匿名函数)

希望你能帮助我

解决方案

var studentInfo1 = _.template("<% _.each(students, function(item) { %>" + 
                      "<div class='studentRec " +
                      "<% (item.midterm_score + item.final_score) / 2 > 65 ? print('passingStudent') : print('failingStudent') %>'>" +
                      "<span style='font-weight:bold'>Name:</span> <span><%= item.lastname %>, <%= item.firstname %> </span>" +
                      "<span style='font-weight:bold'>School:</span> <span><%= item.school %></span></div>" +
                      "<% }); %>");


var result = studentInfo1(students);

appendTemplateData(result);
var studentInfo1=\模板(“+
"" +
“名称:”+
“学校:”+
"");
var结果=学生信息1(学生);
追加模板数据(结果);

请仔细阅读
\uuu.template()
函数的文档

template
实用程序函数将模板字符串作为第一个参数,并返回一个可用于传递模板数据的函数:

// `myTemplate` here is a function!
var myTemplate = _.template("<p><%= name %></p>");

// Now let's pass in the data for the template.
myTemplate({name: 'Joe Doe'}); // it returns: "<p>Joe Doe</p>"
/`myTemplate`这是一个函数!
var myTemplate=..template(“

”); //现在让我们传入模板的数据。 myTemplate({name:'Joe Doe'});//它返回:“Joe Doe


请仔细阅读
\uuu.template()
函数的文档

template
实用程序函数将模板字符串作为第一个参数,并返回一个可用于传递模板数据的函数:

// `myTemplate` here is a function!
var myTemplate = _.template("<p><%= name %></p>");

// Now let's pass in the data for the template.
myTemplate({name: 'Joe Doe'}); // it returns: "<p>Joe Doe</p>"
/`myTemplate`这是一个函数!
var myTemplate=..template(“

”); //现在让我们传入模板的数据。 myTemplate({name:'Joe Doe'});//它返回:“Joe Doe


我已经尝试了你的代码,它运行得很好

我的建议是用这个下划线库替换下划线.js

我遇到了一个像你一样的问题,barrelatejs.org上的库无法工作


我希望该库可以帮助您解决您的问题

我已经尝试了您的代码,它运行良好

我的建议是用这个下划线库替换下划线.js

我遇到了一个像你一样的问题,barrelatejs.org上的库无法工作


我希望图书馆能帮你解决你的问题

谢谢你,我仍然不知道为什么它工作得很好(在视频中),但我按照你的建议,它工作得很好fine@Mustafa当前位置检查我对重复问题的回答,看看发生了什么。看起来您的教程针对的是下划线的早期版本,而不是您正在使用的版本。您是正确的,这就是@VuongNQ能够运行它的原因。。因为他使用了1.4版本(正如他在下面的回答中所链接的。谢谢你,我仍然不知道为什么它工作得很好(在视频中)但是我按照你的建议做了,而且很有效fine@Mustafa:检查我对重复问题的回答,看看发生了什么。看起来你的教程针对的是下划线的早期版本,而不是你正在使用的版本。你是对的,这就是@VuongNQ能够运行它的原因。因为他使用了1.4版本(正如他在下面的回答中所链接的那样。感谢@istos的澄清感谢@istos的澄清感谢你的建议感谢你的建议