【问题标题】:Iterate over a json object array in blaze在 blaze 中迭代一个 json 对象数组
【发布时间】:2015-11-06 02:22:12
【问题描述】:

我是流星的新手,正在努力使用 #each 在 blaze 中。 我尝试关注this answer on stackoverflow,但我的要求略有不同。

我有一个 json 对象数组:

{
    "accounting": [{
            "firstName": "John",
            "lastName": "Doe",
            "age": 23
        },

        {
            "firstName": "Mary",
            "lastName": "Smith",
            "age": 32
        },

        {
            "firstName": "Mike",
            "lastName": "Nolan",
            "age": 21
        }
    ]
}

如何在流星项目中使用 blaze(特别是使用 #each 迭代数组)显示每个对象的名字。

我尝试了很多不同的方法,使用多种辅助方法,但无法实现。如果有人可以请帮忙。

另外,如果不可能,请告知替代方案以达到相同的效果。

数据来自 API 调用,数据的格式是 json 对象,但存储为 Session 变量(所以我将在辅助方法中使用 Session.get() 获取它)。

【问题讨论】:

  • 请展示您尝试过的和无效的。谢谢。
  • 好的,会那样做。我不明白为什么投反对票?我试图简化我的问题,理解这个概念,然后我可以即兴创作并在我的程序中使用。

标签: javascript meteor meteor-blaze


【解决方案1】:

这将取决于您的数据来自何处。在我的示例中,您可以将我的硬编码变量替换为对象的来源。如果您添加它的来源,我可以修改我的解决方案。

基本上,您只需使用辅助函数返回 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 调用的对象结果放入我的解决方案中,它将起作用。只需像我一样返回accounting 数组。编辑:我看到你正在使用会话,更新了我的答案
【解决方案2】:

我假设 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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 2017-07-25
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2011-09-12
    相关资源
    最近更新 更多