Javascript 使用Meteor将项目插入列表UI

Javascript 使用Meteor将项目插入列表UI,javascript,meteor,Javascript,Meteor,我正在学习Meteor,想知道是否有人能帮我解决这个问题。 我正在建立一个gumtree风格的列表网站来进行一些练习 屏幕上会显示一个Listings集合,其中显示了用户创建的所有最新列表。下面是示例代码 我想知道的是,我如何能随机插入一个横幅到项目列表中,并考虑赞助项目的风格。我希望每次加载页面时,在列表中的任意点将一块HTML插入页面 我尝试将results Listings.find放入一个数组,然后在results_list.js中插入广告,但没有成功。读了一段之后,我发现这是因为你只返

我正在学习Meteor,想知道是否有人能帮我解决这个问题。 我正在建立一个gumtree风格的列表网站来进行一些练习

屏幕上会显示一个Listings集合,其中显示了用户创建的所有最新列表。下面是示例代码

我想知道的是,我如何能随机插入一个横幅到项目列表中,并考虑赞助项目的风格。我希望每次加载页面时,在列表中的任意点将一块HTML插入页面

我尝试将results Listings.find放入一个数组,然后在results_list.js中插入广告,但没有成功。读了一段之后,我发现这是因为你只返回了一个光标,所以我不太确定该怎么做。我来自一个纯角度的背景

我的猜测是某种帮助函数,但我不确定从何处开始,因此任何指向正确方向的指针都将是最受欢迎的

结果列表.html

更新

抱歉,伙计们,我读了更多的文档,我想我已经解决了,仍然希望得到你们对这个解决方案的反馈,尽管可能有更好的方法

这应该在不包括开始和结束的随机点添加广告。我将修改resultDetails模板,使广告选项为true,同时显示广告代码

Template.resultsList.helpers({
  results: function() {
    var searchResults = Listings.find({}, {sort: {submitted: -1}}).fetch();
    searchResults.splice(_.random(1, results.length - 1), 0, {advertisement: true});
    return searchResults;
  }
});

一种简单的方法是修改resultDetails模板

<template name='resultDetails'>
  {{#if showBanner}}
    {{> banner}}
  {{/if}}
  ..resultDetails html..
</template>
如果你有条幅必须只出现一次这样的规则,这会变得更复杂一些。在这种情况下,您将需要基于完整光标执行逻辑,例如在resultsList的onRendered处理程序中,并预先计算列表中要显示横幅的位置

Template.resultsList.helpers({
  results: function() {
    var searchResults = Listings.find({}, {sort: {submitted: -1}}).fetch();
    searchResults.splice(_.random(1, results.length - 1), 0, {advertisement: true});
    return searchResults;
  }
});
<template name='resultDetails'>
  {{#if showBanner}}
    {{> banner}}
  {{/if}}
  ..resultDetails html..
</template>
Template.resultDetails.helpers({
  showBanner: function(){
    return Math.random()>0.98; // show the banner with probability 0.02
  }
});