我正在尝试模拟以下对象数组:
var arr = [{name:"Ryan Pays", url:"http://www.ryanpays.com"}, {name:"foo", url:"http://www.google.com"}];
我将该数组转换为如下对象:
arr = $.extend({}, arr);
这给了我以下目标:
{
0:{name:"Ryan Pays", url:"http://www.ryanpays.com"},
1:{name:"foo", url:"http://www.google.com"}
}
使用Mustache我想使用以下模板枚举该对象:
var template = "<h4>Your friends' choices</h4>" +
"<ul>" +
"<li>" +
"<p><strong>{{name}}</strong> likes <a href='{{url}}'>this</a></p>" +
"</li>" +
"</ul>";
var html = Mustache.to_html(template, displayData);
$('.choices').html(html);
我似乎无法做到这一点。我可以得到第一个像这样打印的结果:
var html = Mustache.to_html(template, displayData[0]);
等等但不是两者。
链接到这个问题的小提琴:
答案 0 :(得分:18)
您可以将模板用于数组:
var template = "<h4>Your friends' choices</h4>" +
"<ul>" +
"{{#arr}}"+
"<li>" +
"<p><strong>{{name}}</strong> likes <a href='{{url}}'>this</a></p>" +
"</li>" +
"{{/arr}}"+
"</ul>";
var html = Mustache.to_html(template, {arr:arr});
答案 1 :(得分:5)
您需要使用Mustache的内置迭代功能:
var template = "<h4>Your friends' choices</h4>" +
"<ul>{{#friends}}" +
"<li>" +
"<p><strong>{{name}}</strong> likes <a href='{{url}}'>this</a></p>" +
"</li>" +
"{{/friends}}</ul>";
var data = {friends: [{name:"Ryan Pays", url:"http://www.ryanpays.com"}, {name:"foo", url:"http://www.google.com"}]};
var html = Mustache.to_html(template, data);
秘密酱在章节声明{{#friends}}