2013-10-10 44 views
0

的JavaScript哈希我有js函数返回哈希:遍历在HTML模板

Template.mainmenu.menuitem = function() { 
    var links = {}; 
    links["mail"] = "http://some.net"; 
    links["rss"] = "http://rss.com"; 
    return links; 
    };> 

我想遍历这个哈希值在HTML模板并创建一组链接。

我已经尝试此代码:

<template name="mainmenu"> 
    {{#each menuitem}} 
    {{this}} 
    {{/each}} 
</template> 

但它返回任何结果。如果我将哈希更改为数组,所有工作正常。

我如何可以遍历哈希和构建HTML链接:

<a href="{{this.value}}">{{this.key}}</a> 

回答

1

我觉得没有什么handelbars有遍历JS哈希bult式帮手,但你可以编写自己的助手将返回或哈希的内容,您可以使用“与”:

{{#with links}} 
    <p>{{{mail}}}</p> 
    <p>{{{rss}}}</p> 
{{/with}} 
+0

你能解释我怎么能写我自己的帮手,它会返回哈希的内容?对不起,但我是js的新手。 – demas

+1

Metor原生使用Handlebars模板引擎,所以http://handlebarsjs.com/block_helpers.html – Denis

0

如流星默认包含下划线,你可以使用下划线的方法来提取散列的内容:

Template.mainmenu.menuitem = function() { 
    var links = {}; 
    links["mail"] = "http://some.net"; 
    links["rss"] = "http://rss.com"; 
    return _.values(links); 
}; 
+0

据我所知在这种情况下,我只返回散列值,但我需要同时具有键和值来构造HTML。 – demas

0

要继续在那里休伯特OG不放过:

Template.mainmenu.menuitem = function() { 
    var links = {}; 
    links["mail"] = "http://some.net"; 
    links["rss"] = "http://rss.com"; 
    return _.map(links, function (value, key) {return {_id: key, key: key, value: value}}); 
}; 

有一个_id场以及使流星星火渲染引擎可以更好地了解情况发生变化重绘什么是很重要的。