2015-06-05 5 views
1

У меня есть проблема с обещаниями, что решить массив в Dust.jsDust.js Promise Массив

Скажем, у меня есть функция Dust.js как так (это будет делать что-то еще позже, но для ради простой пример), который решает массив:

var doSomethingAsync = new Promise(function(resolve, reject) { 
    // do a thing, possibly async, then… 
    setTimeout(function(){ 

     var items = [{ 
      name: 'One', 
     }, { 
      name: 'Two', 
     }, { 
      name: 'Three', 
     }]; 

     resolve(items); 
    }, 5000); 
}); 

res.stream('admin/index', { 
    "async": doSomethingAsync 
}); 

и мой шаблон выглядит так:

{#async} 
    {name} 
{/async} 

это не похоже на печать, что можно было бы ожидать. Использование помощника contextDump печатает это:

[ { "name": "One" }, { "name": "Two" }, { "name": "Three" } ] 

Каждый знает, что я делаю неправильно, это предназначено ли поведение или является ли это ошибка?

+0

Пыль 2.7.2 отсутствует с исправлением. – Interrobang

ответ

1

Ваш ответ правильный. В настоящее время весь массив получает надевается на контекст, так что вы тогда должен перебрать ваш контекст:

{#async} 
    {#.} 
     {name} 
    {/.} 
{/async} 

Но это fixed in Dust 2.7.2.

Используя эту версию, вы можете перебирать возвращаемый массив так, как вы ожидали.

{#async} 
    {name} 
{/async} 
0

Оказывается, у вас есть цикл по себе ...

{#async} 
    {#.} 
     {name} 
    {/.} 
{/async} 
+1

Это похоже на ошибку; Я открыл для вас вопрос по нашему трекеру проблем: https://github.com/linkedin/dustjs/issues/674 – Interrobang

+0

О, хорошо. Сладкий, спасибо! –

+1

Это будет исправлено в 2.7.2 – Interrobang

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