2013-02-14 4 views
1

После JSONP вызова я вернулся:Итерация через массив объектов с использованием Dustjs

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

Heres фактический 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, мабы я интерпретирую это неправильно.

Какой синтаксис я использовал бы в Dust.js для итерации по каждому объекту в этом массиве?

ответ

5

Вы можете использовать ярлык «текущий контекст».

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

+1 работает отлично, см. [JSFiddle] (http://jsfiddle.net/rYMQL/1/) –

+1

Я искал вокруг dustjs, но ничего не мог найти о '# .'. Где это документировано? –

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, мабы я интерпретирую это неправильно. –

+0

@DanKanze Я все еще ищу решение. Downvoting не ускоряет это. Прощай. –

+0

@DanKanze Пожалуйста, просмотрите обновленный ответ и JSFiddle. –

Смежные вопросы