如何获取数组的内容以反映在我的模板中?

时间:2017-03-07 14:20:29

标签: javascript templates meteor cursor

我的返回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数组的元素?

期待您的帮助。

2 个答案:

答案 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.nrOfViewstatsObj.statsDate中的方式调用它。