2012-05-09 1 views
2

Уверен, что я делаю довольно просто неправильно, но не могу найти объяснения. У меня есть следующие строки в моем шаблоне, который не печатает любые значения на выходе HTML:Как распечатать результат метода _each в шаблоне eco

<%= _.each(@place.get("hash"),(count, tag) -> "#{tag} ") %> 

Эта строка печатает значения консоли прекрасно:

<%= _.each(@place.get("hash"),(count, tag) -> console.log "#{tag} ") %> 

Когда я пытаюсь использовать команда печати и обновления, Google Chrome создает меню печати. Как я могу это исправить?

ответ

2

each 0 ничего не возвращает, поэтому <%= _.each(...) %> ничего полезного не делает. Вы можете использовать _.map и join:

<%= _(@place.get('hash')).map((count, tag) -> tag).join(' ') %> 

или вы могли бы использовать _.keys и join:

<%= _(@place.get('hash')).keys().join(' ') %> 

_.each Ваш просто извлекая ключи, так что вы должны сказать, что вы имеете в виду.

Если вы используете node.s, то вы должны иметь Object.keys, а также:

<%= Object.keys(@place.get('hash')).join() %> 
+0

Спасибо за разъяснение, пошел с последним. Странно, что теги записывались на консоль, если метод 'each' ничего не возвращает –

+0

@socratic_singh: то, что' console.log' делает, полностью отделено от того, что заканчивается в шаблоне. –

6

В дополнении к полезному Underscore методов мю слишком короток mentioned, вы можете также использовать CoffeeScript родную for of в Эко:

<% for tag of @place.get("hash"): %> 
    <%= tag %> 
<% end %> 

Это может быть полезно, если вам нужно добавить разметку вокруг каждого элемента. Например:

<ul> 
    <% for tag of @place.get("hash"): %> 
    <li><%= tag %></li> 
    <% end %> 
</ul> 
+0

К сожалению, это не сработало; сделал немного копания и потребовалось заменить «in» на «of» при повторении через хеши. Совершенно лучше, когда вам нужна разметка, хотя - спасибо! –

+1

@socratic_singh Ups, я полностью пропустил, что это был объект вместо массива, который повторялся. Я обновил ответ, чтобы использовать 'of' вместо' in', поэтому он не вводит в заблуждение возможных будущих читателей хе-хе. Спасибо, что указали! – epidemian

0

Вот пример для перебора хэш с _.each методом Underscore в:

Учитывая хэш:

articlesByMonth = {'2014-07': [{id: 1, title: 'foo'}, {id: 2, title: 'bar'}]} 

в сочетании с шаблоном:

<ul> 
    <% _.each articlesByMonth, (articles, month) =>: %> 
    <%= month %> 
    <ul> 
     <% _.each articles, (article) =>: %> 
     <li><%= article.title %></li> 
     <% end %> 
    </ul> 
    <% end %> 
</ul> 

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

  • Нет связанных вопросов^_^