我确信我做的很简单,但似乎无法找到解释。我的模板中有以下行,它没有在html输出中打印任何值:
<%= _.each(@place.get("hash"),(count, tag) -> "#{tag} ") %>
这一行将控制台的值完全打印出来:
<%= _.each(@place.get("hash"),(count, tag) -> console.log "#{tag} ") %>
当我尝试使用打印命令并刷新时,谷歌浏览器会抛出一个打印菜单。我该如何解决这个
答案 0 :(得分:6)
除了有用的Underscore方法,mu太短mentioned,你还可以在Eco中使用CoffeeScript的原生for of
:
<% for tag of @place.get("hash"): %>
<%= tag %>
<% end %>
如果您需要在每个元素周围添加一些标记,这可能很有用。例如:
<ul>
<% for tag of @place.get("hash"): %>
<li><%= tag %></li>
<% end %>
</ul>
答案 1 :(得分:2)
下划线的each
不返回任何内容,因此<%= _.each(...) %>
没有做任何有用的事情。您可以使用_.map
和join
:
<%= _(@place.get('hash')).map((count, tag) -> tag).join(' ') %>
<%= _(@place.get('hash')).keys().join(' ') %>
您的_.each
只是提取密钥,因此您应该说出您的意思。
如果你正在使用node.s那么你也应该有Object.keys
:
<%= Object.keys(@place.get('hash')).join() %>
答案 2 :(得分:0)
以下是使用下划线_.each
方法迭代哈希的示例:
给出哈希:
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>