Javascript 下划线模板错误:函数(n){返回a.call(this,n,h)}
我正在学习一个关于下划线的视频教程,在我达到将逻辑放入模板的程度之前,一切都很顺利 SampleData.js包含学生数组: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"
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的澄清感谢你的建议感谢你的建议