【发布时间】:2015-09-03 19:35:27
【问题描述】:
我需要根据下拉列表中的选择过滤列表或记录。 我有三个下拉菜单需要相互协作以反应方式过滤记录。即一个下拉列表中的值选择应该过滤受其他下拉列表值影响的记录。
var filterAndLimitResults = function (cursor) {
if (!cursor) {
return [];
}
var raw = cursor.fetch();
var currentChosenCategory = chosenCategory.get();
var currentChosenCity = chosenCity.get();
var currentJtype = chosenJtype.get();
console.log(currentChosenCategory);
console.log(currentChosenCity);
// filter category
var filtered = [];
if (!currentChosenCategory || currentChosenCategory == "" && !currentChosenCity || currentChosenCity == "" && !currentJtype || currentJtype == "")
{
filtered = raw;
// console.log(filtered);
}
else {
filtered = _.filter(raw, function (item) {
if(currentChosenCategory){
return item.ccategory === currentChosenCategory ;
}
if(currentChosenCity){
return item.city === currentChosenCity ;
console.log(item.city === currentChosenCity);
}
});
}
var currentLimit =limit.get();
//enforce the limit
if (currentLimit ) {
filtered = _.first(filtered, currentLimit );
}
return filtered;
};
上面的代码既过滤了下拉列表,又限制了记录的数量,以实现无限滚动。
为基于文本的搜索编辑
这是我的搜索框事件图
"keyup #search-title":function(e,t){
if(e.which === 27){
searchTitle.set("");
}
else {
var text = $(e.target.val);
searchTitle.set(text)
console.log(searchTitle.set(text));
}
}
这就是我在filteredAndLimitResults做的事情
if(!(!currentSearchTitle || currentSearchTitle == "")) {
filtered = _.filter(filtered, function (item) {
return item.title === currentSearchTitle ;
console.log(item.title === currentSearchTitle);
});
}
当我在搜索框中输入内容时。所有的记录都消失了,当在新闻esc 时,它又恢复了原样。在console.log 中,我可以看到每次我按下一个键都会返回集合。
【问题讨论】:
标签: meteor meteor-helper