【问题标题】:Mustache templating with an array of objects带有对象数组的 Mustache 模板
【发布时间】:2012-02-09 22:08:26
【问题描述】:

我正在尝试对以下对象数组进行模板化:

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]);

依此类推,但不是两者兼而有之。

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

http://jsfiddle.net/AtJDa/

【问题讨论】:

  • “我问你一个问题..” -- 抱歉,我无法抗拒

标签: javascript jquery templates mustache


【解决方案1】:

您可以使用数组模板:

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});

【讨论】:

  • 这就像一个魅力。甚至看不到此功能的文档。这是如何工作的?
  • 对不起,我知道现在发生了什么 :)
  • 谢谢 nikoshr,这解决了我在使用 github 生成的 JSON 提要时遇到的问题..
【解决方案2】:

您需要使用 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);

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

秘诀在部分声明{{#friends}}

【讨论】:

  • 我真的无法访问应用程序中该级别的对象。我没有在原始问题中指定这一点是不好的。
  • 我遇到了同样的问题,我知道解决方案是什么(使用内置迭代的东西),但我的问题是我没有像“朋友”这样的数据的“句柄”例子。通过查看 Firebug 中返回的 JSON,JSON 数组上没有名称。我的收藏刚开始时像 [{name:"Ryan Pays", 而不是 {friends: [{name:"Ryan Pays", 我可以在我的 WebAPI 服务器上做些什么来命名收藏吗?
猜你喜欢
  • 1970-01-01
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多