lodash _.template()错误的输出

问题描述:

我现在在学习lodash。我的目标是使用lodash模板输出一个用户数组到我的html表格。但是,我无法弄清楚为什么我的模板不起作用。lodash _.template()错误的输出

我的用户

var users = [ 
    { 'user': 'fred', 'active': false, 'age': 40 }, 
    { 'user': 'pebbles', 'active': false, 'age': 1 }, 
    { 'user': 'barney', 'active': true, 'age': 36 } 
]; 

我的模板

let template4 = _.template('<ul>' + 
    '<% _.forEach(users, function(user) { %>' + 
    '<li><%- user.user %></li>' + 
    '<% }); %>' + 
    '</ul>'); 

let template4Result = template4({ 'users': users }); // I expect => '<ul><li>fred</li><li>pebbles</li><li>barney</li></ul>' 

console.log(template4Result);// => '<ul></ul>' 

我想不出我应该怎么设计我的模板,以便它遍历我的收藏,并增加了一些HTML代码其中的每个用户。

+0

你确定你的'users'被正确地传递? – Soviut

您的示例代码有效;以下是一个正在运行的代码段。

var users = [ 
 
    { 'user': 'fred', 'active': false, 'age': 40 }, 
 
    { 'user': 'pebbles', 'active': false, 'age': 1 }, 
 
    { 'user': 'barney', 'active': true, 'age': 36 } 
 
]; 
 

 
let template4 = _.template('<ul>' + 
 
    '<% _.forEach(users, function(user) { %>' + 
 
    '<li><%- user.user %></li>' + 
 
    '<% }); %>' + 
 
    '</ul>'); 
 

 
let template4Result = template4({ 'users': users }); 
 
console.log(template4Result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

的问题是,你传递到模板中的users变量中有没有项目。所以你没有得到你期望的数据。

如果您通过AJAX调用异步检索用户,则需要使用回调才能在ajax调用返回后生成模板。下面是一个 - 示例(ajax不是真实的接口)。

ajax.get(function(users) { 
    // this would be the "success" callback 
    // we're now able to render the template since we have the data 

    let template4Result = template4({ 'users': users }); 
}) 
+0

是的,你是对的。我的变量有问题。我使用'userModel = users;'而不是'userModel = _.take(users,300);'。非常感谢你的帮助! –

你可以试试这个:

let template4 = _.template('<ul>' + 
'<% _.forEach(users, function(value, key) { %>' + 
'<li><%- value.user %></li>' + 
'<% }); %>' + 
'</ul>');