在 {{each}} 助手中使用 ReactiveVar

Use ReactiveVar in {{each}} helper

我的助手中有一个 ReactiveVar,其中 returns 一些要放置在模板中的照片

photoCount:->
    Template.instance().rvPhotoCount.get()

现在我需要用 photoCount 返回的 img 的数量来响应性地填充我的 html。我尝试使用 {{each photoCount}}<img> 但收到错误 {{#each}} currently only accepts arrays, cursors or falsey values.
我该如何解决这个问题?

{{#each}} 运算符用于迭代事物列表,例如,在您的情况下,图像列表。

目前您正在传递 {{#each}} 您拥有的 数量 张图像。而且each不知道如何迭代单个数字!

如果你想显示每个图像,你应该传递each图像列表本身,以数组或游标的形式:

{{#each images}}<img src={{src}} />{{/each}}

如果您只想显示张图片,只需使用{{photoCount}}!

<p>There are {{photoCount}} images.</p>

如果你只是想打印一些相同的 "static" img,你必须在你的助手中预处理数组:

  photoCount: function(){
    var countArr = [];
    var count = Template.instance().rvPhotoCount.get();
    for (var i=0; i<count; i++){
      countArr.push({});
    }
    return countArr;
  }

并在其上使用 {{#each}}。遗憾的是,Meteor 在内置模板功能方面非常有限。

我决定将辅助程序输出更改为数组以供解决。
为了填充数组,我使用 coffeescript 数组切片。

photoCount:->
    count=Template.instance().rvPhotoCount.get()
    array=[1..count]