[英]Iterate over a json object array in blaze
我是新来的流星,并且一直在努力使用#each
。 我尝试在stackoverflow上遵循此答案 ,但我的要求略有不同。
我有一个json对象数组:
{
"accounting": [{
"firstName": "John",
"lastName": "Doe",
"age": 23
},
{
"firstName": "Mary",
"lastName": "Smith",
"age": 32
},
{
"firstName": "Mike",
"lastName": "Nolan",
"age": 21
}
]
}
如何在流星项目中使用blaze(特别是使用#each迭代数组)显示每个对象的firstName。
我尝试了多种不同的方法,使用了多种辅助方法,但无法实现。 如果有人可以帮忙。
另外,如果不可能,请告诉替代方案以达到相同目的。
数据来自API调用,数据格式为json对象,但存储为Session变量(因此,我将使用Session.get()
在helper方法中从中获取数据)。
这将取决于您的数据来自何处。 在我的示例中,您可以将我的硬编码变量替换为对象的源。 如果您添加它的来源,我可以修改我的解决方案。
基本上,您只需要使用辅助函数返回JSON对象内部的对象数组即可。 在此处,您可以在#each
块中调用帮助程序,并直接使用{{firstName}}
引用firstName
模板
<template name="yourTemplateName">
{{#each accounting}}
{{firstName}}
{{/each}}
</template>
帮手
Template.yourTemplateName.helpers({
accounting: function () {
var data = Session.get('apiResponse');
//You return the array of objects, which can then be iterated with each
if (!_.isEmpty(data)){
return data.accounting;
} else {
return []
}
}
});
我假设API响应位于称为apiResponse的会话变量中。
定义一个助手,如下所示:
Template.body.helpers({
response: function () {
return Session.get('apiResponse');
}
});
在您的模板中,使用#with
模板标签调用响应帮助器以设置数据上下文,并在此标签内使用#each
模板标签遍历计费数组。
<body>
{{#with response}}
{{#each accounting}}
<p>{{firstName}} {{lastName}} is {{age}} years old.</p>
{{/each}}
{{/with}}
</body>
您将在浏览器窗口中看到此内容-
John Doe is 23 years old.
Mary Smith is 32 years old.
Mike Nolan is 21 years old.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.