我有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>
答案 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渲染引擎可以更好地理解在事情发生变化时要重绘的内容。