使用Meteor在列表UI中插入一个项目
Inserting an item into list UI with Meteor
我正在学习Meteor,想知道是否有人可以帮助我解决这个问题。我正在建立一个gumtree风格的上市网站,以获得一些实践。
有一个listing集合显示在屏幕上,它显示了用户最近创建的所有清单。(示例代码如下)
我想知道的是,我如何在项目列表中随机插入一个横幅(考虑赞助项目样式)。我想要一个大块的HTML被插入到页面的随机点在列表中每次页面加载。
我试图将结果listing .find()放入数组中,然后在results_list.js中推送广告,但这不起作用。在做了一些阅读之后,我知道这是因为你只返回一个游标,所以我不太确定如何去做。我的背景是纯角度的
我猜是某种辅助函数,但我不确定从哪里开始,所以在正确的方向上的任何指针将是最感激的。
results_list.html
<template name="resultsList">
{{#each results}}
{{> resultDetails}}
{{/each}}
</template>
results_list.js
Template.resultsList.helpers({
results: function() {
return Listings.find({}, {sort: {submitted: -1}});
}
});
更新!
抱歉伙计们,我读了更多的文档,我想我已经解决了,我仍然想得到你对这个解决方案的反馈,虽然可能有更好的方法来做到这一点。
这应该在随机点(不包括开始和结束)添加广告。我将修改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>
你的辅助函数可以根据随机返回showBanner
:
Template.resultDetails.helpers({
showBanner: function(){
return Math.random()>0.98; // show the banner with probability 0.02
}
});
如果你有像这样的规则,这将变得有点复杂,横幅必须恰好出现一次。在这种情况下,您需要基于完整光标执行逻辑(例如在onRendered
处理程序中用于resultsList
),并预先计算列表中要显示横幅的位置。
相关文章:
- 当在Ember中点击一个项目时,我如何将一个活动类添加到项目列表中
- angularjs移除焦点上的活动类并添加到下一个项目
- 如何通过AngularJS删除一个项目
- 获取每个项目中不为 null 的最后一个项目
- 在另一个项目中使用大理石测试rxjs5方法
- Asp.net 引导下拉菜单 - 选择一个项目
- 处理一个项目,想要添加以下菜单栏,并尽量减少向下滑动
- 在angularJs的选择框中预先选择一个项目
- jQuery 使用 ID 作为 URL 选择一个项目
- 我在Phaser有一个项目.我想在画布上的元素上做一个用户图像编辑器
- Javascript:使用 slice() 从数组中选择除一个项目之外的所有项目
- 如何从包含1000个项目的数组中随机选择一个项目
- 从列表中选择一个项目,
- 在可排序的JQuery UI列表中至少保留一个项目
- 仅单击一行中的一个项目
- 在angularjs中一次选择一个项目
- 有没有更花哨的方法可以在同一类中获得上一个项目
- 如何从用户制作的数组中具体拼接出一个项目
- 角度 - ng 网格通过分组按语法选择下一个/上一个项目
- 是否可以通过使用 javascript 获取数组中的一个项目来删除项目