Mustache.js遍历所有数组

时间:2013-03-30 02:04:32

标签: json handlebars.js mustache

我仍在忙于尝试将JSON文件设置为HTML网站。因此,如果json更改,则更改将在HTML中动态加载。到目前为止,我能够检索内容,甚至要求一些内容。但不是我想要的一切,因为JSON的标记有点奇怪。

由于跨站点保护,我无法直接执行JSOP请求,因此我通过一个小技巧解决了这个问题。我创建了一个简单的test.php:

这样我绕过了跨站点保护,一切运行良好。唯一的问题是我不能遍历我想要的所有数组。目前我正在使用以下脚本进行JSOP调用并获取数据。输出是<li></li>

之间的一个很好的描述
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
</head>
<body>
    <ul id="episodes">
    </ul>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/mustache.js/0.7.0/mustache.min.js"></script>
    <script src="http://ps3scenefiles.com/json/handlebars.js"></script>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script id="episodes-template" type="text/template">

            <li>{{description}}</li>

    </script>
    <script>
        $(function() {
            $.getJSON('http://ps3scenefiles.com/json/test.php', function(data) {
                var template = $('#episodes-template').html();
                var info = Mustache.to_html(template, data);
                $('#episodes').html(info);
            });
        });
    </script>
</body>
</html>

但是当你打开JSON(http://ps3scenefiles.com/json/test.php)的链接时,你会看到Episodes数组有另一个只包含数字的数组。如何创建像

这样的列表
Episode: 1 
     Id:13605 Active:true Lang:en Link: url
     Id:16525 Active:true Lang:ru Link: url
Episode: 2 
     Id:14854 Active:true Lang:en Link: url
     Id:19445 Active:true Lang:ru Link: url

所以要清楚,我怎么能做一个小胡子(或把手)模板,使它看起来像一个例子?

1 个答案:

答案 0 :(得分:0)

您可以使用this answer

中提到的Handlebars帮助程序

Here is a fiddle没有样式,打印出您期望的数据(不是所有字段)。

这是辅助函数 -

Handlebars.registerHelper('eachkeys', function(context, options) {
  var fn = options.fn, inverse = options.inverse;
  var ret = "";

  var empty = true;
  for (key in context) { empty = false; break; }

  if (!empty) {
    for (key in context) {
        ret = ret + fn({ 'key': key, 'value': context[key]});
    }
  } else {
    ret = inverse(this);
  }
  return ret;
});