我的返回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:Array [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 :(得分:1)
{{#each items}}
<div>{{postedDate}}</div>
<div>{{description}}</div>
<div>
{{#each viewStatisticsArray}}
{{nrOfViews}}
{{statsDate}}
{{/each}}
</div>
{{/each}}
@SirBT不确定你是如何进行迭代的,但上述情况肯定会奏效。如果不是,您的发布功能不会发送viewStatisticsArray
唯一原因。
答案 1 :(得分: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
和statsObj.statsDate
中的方式调用它。