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代码其中的每个用户。
答
您的示例代码有效;以下是一个正在运行的代码段。
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>');
你确定你的'users'被正确地传递? – Soviut