2014-09-11 2 views
0

У меня есть шаблон руля, который использует каждое утверждение, одно вложенное внутри другого. Он работает нормально, пока каждый из них не попадает в элемент набора данных, который имеет только один элемент, и в этом случае он ничего не выводит. Вот мой шаблон:Handlebars #each не удается с одним элементом

<div class="container"> 
    {{#each stories.story}} 
     <div class="story"> 
      <h1 class="mask"> 
       <span> 
        {{copy.heading}} 
       </span> 
      </h1> 
      <ul class="story-copy"> 
       {{#each copy.body.text}} 
        <li class="mask"> 
         <span>{{this}}</span> 
        </li> 
       {{/each}} 
      </ul> 
     </div> 
    {{/each}} 
</div> 

Самое интересное, как я уже говорил, что когда уль выводится наружу, когда copy.body.text имеет более чем один текстовый узел, он работает. Если есть только ОДИН, он выходит пустым. Там должно быть что-то, что мне не хватает. Может ли кто-нибудь помочь?

+1

Когда есть только один экземпляр 'copy.body.text', может быть, это фактически не массив, а простая строка? –

+0

Ты совершенно прав. Я не писал конвертер xml-> json, и получается, что его просто прямая строка. БЛАГОДАРЯ! – dudewad

ответ

1

не удалось воспроизвести вашу ошибку. можете ли вы разместить свои данные? это работает для меня: http://jsfiddle.net/Schniz/7v0qawbd/

var data = { 
    stories: { 
     story: [{ 
      copy: { 
       heading: "hello", 
       body: { 
        text: [ 
         "Hey" 
        ] 
       } 
      } 
     }] 
    } 
}; 

еще, хотя я не знаю, как выглядит ваши данные, я думаю, что выглядит как ваш шаблон должен быть своего рода разные: http://jsfiddle.net/Schniz/Ly8uh2u1/ для использования с данными, который выглядит как:

var data = { 
    stories: [{ 
     copy: { 
      heading: "hello", 
      body: [ 
       "Hey" 
      ] 
     } 
    }] 
}; 
+1

Ваш вопрос решил мою проблему. Мы конвертируем XML-файл на лету в JSON, и конвертер не создает массив, если есть только один элемент. Sheesh. – dudewad

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