在HTML模板中迭代javascript哈希

时间:2013-10-10 06:09:42

标签: javascript html meteor

我有js函数,它返回hash:

  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>  

3 个答案:

答案 0 :(得分:1)

我不认为哪些把手有内置帮助器来迭代js hash,但你可以编写自己的助手来返回哈希的内容,或者你可以使用“with”:

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

答案 1 :(得分:0)

由于Meteor默认包含下划线,因此您可以使用下划线方法来提取哈希的内容:

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

答案 2 :(得分: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字段也很重要,这样Meteor的Spark渲染引擎可以更好地理解在事情发生变化时要重绘的内容。