2012-02-28 92 views
1

我是JSON和小胡子的新手。我试图迭代我使用Mustache创建的数组,并且遇到了一些问题。我的代码如下所示:如何使用小胡子迭代JSON数组

var shows=[   
     {"title":"Strawberry Shortcake","description":"A show about a cake","video":"none","category":"chilren"}, 
     {"title":"Vanilla Ice","description":"A show about a ice","video":"none","category":"adult"} 
]; 

var template="{{#shows}}{{.}}{{/shows}}"; 

var html=Mustache.render(template,shows); 

document.write(html); 
+1

请解释这些问题的* *。你期望什么? – kapa 2012-02-28 16:10:43

+0

你写过“interate”而不是“iterate”。我不能自己编辑它,因为它只是一个字符。 – hippietrail 2012-02-28 16:12:35

回答

2

你想要的“节目”是在散,以便正确地迭代:

var shows={"shows":[   
     {"title":"Strawberry Shortcake","description":"A show about a cake","video":"none","category":"chilren"}, 
     {"title":"Vanilla Ice","description":"A show about a ice","video":"none","category":"adult"} 
]}; 

var template="{{#shows}}{{.}}{{/shows}}"; 

var html=Mustache.render(template,shows); 

document.write(html); 

这将产生你的模板多次的预期效果。

UPDATE

要在lambda表达式你的问题。我只是在manual看这个。我认为它涵盖了你问什么:

当值是一个可调用对象,如函数或lambda,该 对象将被调用,并通过文本块。文字通过 是文字块,未呈现。 {{tags}}将不会被扩展 - lambda应该自己做。这样你就可以实现过滤器或缓存。

模板:

{{#wrapped}} 
    {{name}} is awesome. 
{{/wrapped}} 

哈希:

{ 
    "name": "Willy", 
    "wrapped": function() { 
    return function(text) { 
     return "<b>" + render(text) + "</b>" 
    } 
    } 
} 
+0

谢谢,完美的工作! – user1238282 2012-02-28 16:25:08

1

U可以这样做:

 
var shows=[   
     {"title":"Strawberry Shortcake","description":"A show about a cake","video":"none","category":"chilren"}, 
     {"title":"Vanilla Ice","description":"A show about a ice","video":"none","category":"adult"} 
]; 

var template="{{#.}}title:{{title}},video:{{video}}{{/.}}"; 

var html=Mustache.render(template,shows); 

document.write(html);