2013-02-14 132 views
1

一个JSONP调用我回到后:通过迭代对象Array使用Dustjs

[ 
    { 
     "text": "yo whats up?", 
     "id": 1 
    }, 
    { 
     "text": "hey man!", 
     "id": 2 
    }, 
    { 
     "text": "dude.", 
     "id": 3 
    } 
] 

继承人的实际API调用:
http://api.twitter.com/1/statuses/user_timeline/codinghorror.json

使用Dust.js我会做这样的事情:

<ul> 
{#myPosts} 
    <li>{text}, {id}{~n}</li> 
{:else} 
    <p>Humm...</p> 
{/myPosts} 
</ul> 

但是在响应中没有键“myPosts”。那就是问题所在。签出API调用也看到如何返回JSON,mabye我解释这个错误。

我将在Dust.js中使用什么语法来遍历此数组中的每个对象?

回答

5

您可以使用“当前上下文”快捷方式。

{#.} 
    {text} - {id}<br /> 
{/.} 
+0

+1作品完美,请参阅[JSFiddle](http://jsfiddle.net/rYMQL/1/) – 2013-02-17 22:12:21

+1

我在dustjs周围搜索,但找不到任何关于'#.'的内容。这在哪里记录? – 2013-02-17 22:23:25

1

dustjs {guide},我会说,你的例子应该已经遍历数组。你只需要它作为

{ 
    myPosts: [ 
     { 
      "text": "yo whats up?", 
      "id": 1 
     }, 
     { 
      "text": "hey man!", 
      "id": 2 
     }, 
     { 
      "text": "dude.", 
      "id": 3 
     } 
    ] 
} 

Dust Tutorial - Dust under the covers,我已经建立了这个JSFiddle。忽略样板,把它归结为自己的前缀接收JSONP阵列myPosts并传递到dustjs

var jsonp = [...]; 
dust.render('template', { myPosts: jsonp }, function (err, out) { 
... 
}); 

要在你的模板访问任何东西,你必须命名它。没有其他办法,AFAICS。

+0

是的,但没有关键的“myPosts”。那就是问题所在。签出API调用也看到如何返回JSON,mabye我解释这个错误。 – 2013-02-14 16:36:40

+0

@DanKanze我仍在寻找解决方案。 Downvoting并没有加快速度。再见。 – 2013-02-14 16:48:37

+0

@DanKanze请看更新后的答案和JSFiddle。 – 2013-02-14 17:26:14