- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个下拉列表作为过滤器,然后帖子总数限制为一次仅显示 4 条,除非单击“加载更多”按钮来显示另外 4 条记录。问题是下拉列表也仅加载前 4 条记录中的值。
这是我的出版物
Meteor.publish('allJobs', function(limit){
if(!limit){
return Jobs.find();
}
return Jobs.find({}, {limit: limit});
});
我在 Controller 中的主要订阅
waitOn: function() {
return Meteor.subscribe("allJobs",4,this.findOptions());
},
模板的助手
Template.jobsList.helpers({
'allJobs': function(){
var filter ={};
var category = Template.instance().selectedCategory.get();
var city = Template.instance().selectedCity.get();
var jtype = Template.instance().selectedJobType.get();
if(jtype)
filter.jtype = jtype;
if(city)
filter.city = city;
if(category)
filter.ccategory = category;
return Jobs.find(filter);
},
'moreResults': function(){
return !(Jobs.find().count() < Session.get("jobsLimit"));
}
});
Template.jobsList.onRendered(function(){
Session.setDefault("jobsLimit", 4);
this.autorun(function(){
Meteor.subscribe("allJobs", Session.get("jobsLimit"));
});
});
我尝试为此进行另一个订阅,但没有成功。请帮忙提供最佳解决方案。
模板
<template name="jobsList">
<div class="col s12 filter-holder">
<div class="col m4 s4 filter-box">
{{> categoryFilter}}
</div>
<div class="col m4 s4 filter-box">
{{> cityFilter}}
</div>
</div>
<div class="col s12">
<ul class="collection" id="listings">
{{#each allJobs}}
<li>
{{> jobItem}}
</li>
{{/each}}
</ul>
{{#if moreResults}}
<button class="load-more" id="showMoreResults" type="submit">Load More
<i class="mdi-content-send right"></i>
</button>
{{/if}}
</div>
</template>
请帮助我陷入这种情况
更新了js文件
var limit = new ReactiveVar;
var filterAndLimitResults = function (cursor, limit) {
if (!cursor) {
return [];
}
var chosenCategory = limit.get("chosenCategory");
var raw = cursor.fetch();
// filter category
var filtered = [];
if (!chosenCategory || chosenCategory == "") {
filtered = raw;
} else {
filtered = _.filter(raw, function (item) {
return item.category === chosenCategory;
});
}
if (limit) {
filtered = _.first(filtered, limit);
}
return filtered;
};
//模板创建函数
Template.jobsList.onCreated(function(){
limit.set(4);
limit.set("chosenCategory");
});
//模板辅助函数
Template.jobsList.helpers({
"displayedJobs": function() {
return filterAndLimitResults(Jobs.find(), (limit.get()));
},
'moreResults': function(){
return !(Jobs.find().count() < limit.get());
}
});
下拉点击过滤
在渲染函数中声明
Template.jobsList.onRendered(function(){
limit.set(4);
chosenCategory.set();
});
点击事件如下
"click .categoryselection": function(e, t){
e.preventDefault();
chosenCategory.set(chosenCategory.get());
最佳答案
首先,为了确保我理解您的情况,让我重新表述一下:您有一组文档,想要使用类别进行排序(每个文档都存储在专用字段中)。
一方面,您希望使用集合文档中所有可能的类别构建一个下拉列表,以便允许用户选择类别并过滤结果。
另一方面,您只想一次仅显示 4 个项目。这 4 个显示的项目(以及在它们之后可以加载的项目)是与过滤类别匹配的前 4 个项目。
您选择显示 4 × 4 项只是为了避免在用户界面中放置太多内容
我给你的建议是:
您无需限制使用出版物加载的项目。首先,它会减慢您的用户界面(您必须每次都向服务器发出请求),其次您可能已经注意到,您将无法实现过滤。
一步一步:
return Jobs.find();
替换您的出版物。这不是您需要进行过滤或强制限制显示项目数量的地方。这意味着现在,如果您添加一个 console.table(Job.find().fetch());
您将获得所有可用的作业以供显示。这将使下拉列表显示您需要的所有类别,使用我建议您在your precedent question中使用的_.uniq
您创建一个 session 变量(或使用 ReactiveVar
的 react 变量)来存储您的当前限制。您可以在模板 rendered
函数中启动它,甚至在模板 created
函数中启动它:pageSession.set("limit", 4);
并且您可以根据需要在“加载更多”按钮单击事件中对其进行修改。
您将在客户端代码中创建一个函数,以强制执行您的规则(限制显示的项目数量和类别过滤)。我们将其称为filterAndLimitResults
。您用来返回显示的作业的助手将变成如下所示:
“显示的作业”:函数(){
返回filterAndLimitResults(Job.find());
}
您不需要“moreResults”助手。摆脱它。您只需单击“更多结果”按钮即可创建一个事件,并在其中更新您的 ReactiveVar
Template.jobsList.events({
“点击#showMoreResults”:函数(e,t){
e.preventDefault();
limit.set(limit.get()+4);
},
您创建一个 session 变量(或使用 ReactiveVar
的 react 变量)以存储当前选择的类别。您可以在模板 rendered
函数中启动它,甚至在模板 created
函数中启动它:pageSession.set("chosenCategory", "");
然后您可以根据需要在下拉项单击事件中对其进行修改。
您现在需要编写您的filterAndLimitResults
。这是一个未经测试的示例:
var limit = new ReactiveVar;
var chosenCategory= new ReactiveVar;
var filterAndLimitResults = function (cursor) {
if (!cursor) {
return [];
}
var raw = cursor.fetch();
var currentChosenCategory = chosenCategory.get();
// filter category
var filtered = [];
if (!currentChosenCategory || currentChosenCategory == "") {
filtered = raw;
} else {
filtered = _.filter(raw, function (item) {
return item.category === currentChosenCategory ;
});
}
var currentLimit =limit.get();
// enforce your limit
if (currentLimit ) {
filtered = _.first(filtered, currentLimit );
}
return filtered;
};
您应该可以开始了 :-) 您几乎可以立即得到结果,并且它们是 react 性的。
ps:遵循相同的逻辑,您应该可以轻松地按城市和/或任何其他字段进行过滤。
关于javascript - Dopdownlist 正在填充有限的值,而不是总集合中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30829105/
我有一个加号/减号按钮,希望用户不能选择超过 20 个但不知道如何让它工作。我尝试使用 min="1"max="5 属性,但它们不起作用。这是我的代码和一个 fiddle 链接。https://jsf
我正在尝试复制顶部底部图,如示例 here但它没有正确渲染(紫色系列有 +ve 和 -ve 值,绿色为负值)留下杂乱的人工制品。我也在努力创建一个玩具示例来复制这个问题,所以我希望尽管我缺乏数据,但有
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 6 年前。 社区去年审查了是
这个问题在这里已经有了答案: Adding two positive integers gives negative answer.Why? (4 个答案) 关闭 5 年前。 我遇到了一个奇怪的问题
有谁知道如何将字符串值类型 -4,5 或 5,4 转换为 double -4.5 或 5.4? 最佳答案 只需使用 Double.parseDouble(Locale, String); 糟糕,我很困
我正在尝试根据 TextBlob 分类插入一个仅包含“正”或“负”字符串的新数据框列:对于我的 df 的第一行,结果是 ( pos , 0.75, 0.2499999999999997)我想要' 正
我对 VBA 非常陌生,无法理解如何在一个循环中完成 2 个任务。我非常感谢您的帮助。 我已经能够根据第 3 列中的数据更改第 2 列中的数值,但我不明白如何将负值的字体更改为红色。 表格的大小每月都
欢迎, 我正在使用 jquery 通过 POST 发送表单。 这就是我获得值(value)的方式。 var mytext = $("#textareaid").val(); var dataStrin
double d = 0; // random decimal value with it's integral part within the range of Int32 and always p
我有这个字符串: var a='abc123#xyz123'; 我想构建 2 个正则表达式替换函数: 1) 用 '*' 替换所有确实有 future '#'的字符(不包括'#') 所以结果应该是这样的
我正在使用 DialogFragment。当用户从 Gmail 平板电脑应用程序的屏幕与下面示例图片中的编辑文本进行交互时,我希望正面和负面按钮保持在键盘上方。 在我的尝试中不起作用,这是我的 Dia
从组装艺术一书中,我复制了这句话: In the two’s complement system, the H.O. bit of a number is a sign bit. If the H.O
是否有更好更优雅的方法来实现下面的简单代码(diffYear、A 和 B 是数字): diffYear = yearA - yearB; if (diffYear == 0) { A = B
我正在设计一种语言,并尝试确定 true 应该是 0x01 还是 0xFF。显然,所有非零值都将转换为 true,但我正在尝试确定确切的内部表示。 每种选择的优点和缺点是什么? 最佳答案 没关系,只要
在我的 dialogfragment 类的 OnCreateDialog 中,我正在这样做: AlertDialog.Builder builder = new AlertDialog.Builder
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda usin
我偶然发现了一个奇怪的 NSDecimalNumber 行为:对于某些值,调用 integerValue、longValue、longLongValue 等,返回意想不到的值(value)。示例: l
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda using
我有这个正则表达式来测试用户输入是否有效: value.length === 0 || value === '-' || (!isNaN(parseFloat(value)) && /^-?\d+\.
我想用高斯混合模型拟合数据集,数据集包含大约 120k 个样本,每个样本有大约 130 个维度。当我使用 matlab 执行此操作时,我运行脚本(簇号为 1000): gm = fitgmdist(d
我是一名优秀的程序员,十分优秀!