小胡子用一系列对象模板化

Rya*_*P13 6 javascript jquery templates mustache

我正在尝试模拟以下对象数组:

var arr = [{name:"Ryan Pays", url:"http://www.ryanpays.com"}, {name:"foo", url:"http://www.google.com"}];
Run Code Online (Sandbox Code Playgroud)

我将该数组转换为如下对象:

arr = $.extend({}, arr);
Run Code Online (Sandbox Code Playgroud)

这给了我以下对象:

{
0:{name:"Ryan Pays", url:"http://www.ryanpays.com"},
1:{name:"foo", url:"http://www.google.com"}
}
Run Code Online (Sandbox Code Playgroud)

使用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);
Run Code Online (Sandbox Code Playgroud)

我似乎无法做到这一点.我可以得到第一个结果像这样打印:

var html = Mustache.to_html(template, displayData[0]);
Run Code Online (Sandbox Code Playgroud)

等等但不是两者兼而有之.

链接到这个问题的小提琴:

http://jsfiddle.net/AtJDa/

nik*_*shr 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});
Run Code Online (Sandbox Code Playgroud)


gon*_*uki 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);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/AtJDa/1/

秘密酱是在章节声明中 {{#friends}}