我有一个代表评论流的JSON,例如:
var comments = [
{ "comment_id": 1, "author_id": 100, "text": "hello world!" },
{ "comment_id": 2, "author_id": 120, "text": "cheers world!" },
{ "comment_id": 3, "author_id": 100, "text": "goodmorning world!" },
{ "comment_id": 4, "author_id": 100, "text": "goodnight world!" } ]
您可能会注意到,author_id
100评论了三次。
我有另一个带有author
数据的JSON,例如:
var authors = {
100: {"username": "ciccio"},
120: {"username": "pernacchia"} }
我想在渲染模板时加入这两个JSON,使用authors
作为关键字查找author_id
。有一个帮助者会很棒:
<div class="comments">
<!-- `join` takes an iterable, a lookup dict, a key,
and a new name for the joined property -->
{{#join comments authors "author_id" "author"}}
<div class="Comment">
{{author.username}} says: {{text}}
</div>
{{/join}}
</div>
我试着写下一个帮助来做这个,但我不明白如何引用帮助器中的authors
dict 。
现在我正在手动加入两个dicts,为模板创建 ad-hoc 和 new JSON。 但是将这项工作委托给模板会很棒。
答案 0 :(得分:0)
除非您在代码中的许多地方进行此连接,否则我认为不值得定义辅助函数。只需使用Javascript / JQuery:
$.each(comments, function(key, comment) {
var author_id = comment.author_id;
var comment_text = comment.text;
if (authors[author_id]) {
if (authors[author_id].text) {
authors[author_id].text = authors[author_id].text + " " + comment.text;
} else {
authors[author_id].text = comment.text;
}
}
});
上面将“text”字段添加到“authors”记录中,所以在此之后,只需遍历“authors”列表即可。如果你真的热衷于此,你也可以将它转换为辅助函数。
查看实际操作:http://jsfiddle.net/DUkFa/