2017-03-07 43 views
0

我的返回db.Collection.find()。fetch()遊標反映模板中的所有元素,除了數組中的元素外。如何獲取數組的內容以反映在我的模板中?

我該如何獲得數組的內容以反映在我的模板中?

以下是db.Collection.find()。fetch()的結果,如瀏覽器控制檯所示。

_id: "CJiuk6jjFEBLDQrQc" 
postedDate: Wed Feb 15 2017 15:10:50 GMT+0300 (EAT) 
descriptions: "Clothes" 
viewStatisticsArray: Array[1] 

查找以下viewStatisticsArray:數組[1]在控制檯膨脹時元件。

0: Object 
nrOfViews: 3096 
statsDate: "Tue Mar 07 2017 14:10:56 GMT+0300 (EAT)" 

我的模板函數:

'list': function(){ 
     return buyList.find({}).fetch(); 
    } 

查找以下模板中的結果:

{{#each list}} 
Posted Date: {{postedDate}} displays: Wed Feb 15 2017 15:10:50 GMT+0300 (EAT) 
Description: {{descriptions}} displays: Clothes 
View Stats: {{viewStatisticsArray.nrOfViews}} {{viewStatisticsArray.statsDate}} FAILS to DISPLAY ANYTHING 

{{/each}} 

如何正確地訪問viewStatisticsArray數組中的元素?

期待您的幫助。

+0

你試過迭代viewStatisticsArray – collision

+0

@collision是的,我試過沒有成功... – SirBT

+0

一個JS數組沒有一個名爲「nrOfViews」的字段。你可以顯示你的代碼在哪裏迭代了數組嗎?另外,你爲什麼要在你的幫助器中執行fetch()而不是返回光標? – zim

回答

1
{{#each items}} 
    <div>{{postedDate}}</div> 
    <div>{{description}}</div> 
    <div> 
    {{#each viewStatisticsArray}} 
     {{nrOfViews}} 
     {{statsDate}} 
    {{/each}} 
    </div> 
{{/each}} 

@SirBT不知道你是如何做你的迭代,但上述應該肯定工作。如果不是唯一的原因可能是viewStatisticsArray未被您的發佈功能發送。

1

你可以嘗試調用助手來以任何你想要的方式訪問數組。 如果你只是想獲得一個字符串:

View Stats: {{getStats viewStatisticsArray}} 

JS:

'getStats': function(array){ 
     return array[0].nrOfViews + " " + array[0].statsDate; 
    } 

(如果你需要分別把它們寫兩個幫手。)您也可以改變與一個服務器端遊標server transform

Meteor.publishTransformed('subName', function() { 
    return db.Collection.find({}) 
    .serverTransform({ 
      statsObj : function(item){ 
       return item.viewStatisticsArray[0] 
      } 
    } 
}); 

現在你已經基本上變成了數組轉換成一個對象,可以調用它,你在模板statsObj.nrOfView S和statsObj.statsDate做的方式。

相關問題