2013-10-10 66 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場以及使流星星火渲染引擎可以更好地瞭解情況發生變化重繪什麼是很重要的。