2015-11-05 84 views
2

我是流星的新手,並且在火焰中使用#each掙扎。 我試過this answer on stackoverflow,但我的要求稍有不同。在火焰中迭代json對象數組

我有一個JSON對象數組:

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

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

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

如何從每個對象顯示名字,使用火焰(特別是使用#each迭代陣列)的一個流星項目。

我嘗試了很多不同的方法,使用多個輔助方法,但無法實現。如果有人可以請求幫助。

此外,如果不可能,請告訴替代方案以實現相同。

數據來自API調用,數據格式是json對象,但是作爲Session變量存儲(所以這是我從輔助方法中使用Session.get()得到的地方)。

+0

請出示你已經試過,什麼沒有奏效。謝謝。 –

+0

好的,會這樣做。我不明白爲什麼投票棄權?我試圖簡化我的問題,理解這個概念,然後我可以在我的程序中即興創作並使用它。 –

回答

2

這將取決於您的數據來自何處。在我的例子中,你可以用你的對象的源代替我的硬編碼變量。如果您添加它的來源,我可以修改我的解決方案。

基本上,您只需使用輔助函數返回JSON對象內部的對象數組。從那裏,你可以調用在#each塊的幫手,並直接與{{firstName}}

模板

<template name="yourTemplateName"> 
    {{#each accounting}} 
     {{firstName}} 
    {{/each}} 
</template> 

輔助基準firstName

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 [] 
     } 
    } 
}); 
+0

編輯該問題以包含源代碼。 –

+0

如果您可以將API調用的對象結果導入到我的解決方案中,它將起作用。只要像我一樣返回'accounting'數組。編輯:我看到你使用會議,更新了我的答案 – challett

+1

非常感謝,工作就像一個魅力! –

1

我假設的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. 
+0

這也行得通 – challett