gpt4 book ai didi

mongodb - 使用复选框过滤集合

转载 作者:可可西里 更新时间:2023-11-01 10:31:27 25 4
gpt4 key购买 nike

假设我有一个名为 Cars 的集合,拿着大量文件。

假设我有 5 <input type="checkbox"> , 每个对应于 color键入 Cars文档。

我想根据选中的复选框使用选择器查询集合。这个问题的最佳解决方案是什么?现在看来我要写很多 if声明。有没有更好的办法?

谢谢

最佳答案

您可以将选定(选中)的颜色集存储在 Session 变量中,并在返回 Cars 的帮助程序中使用该 Session 变量的值。下面给出一个完整的解决方案。将这两个文件另存为 cars.htmlcars.js

<body>
{{> filter}}
{{> carList}}
</body>

<template name="filter">
{{#each colors}}
<label>
<input type="checkbox" value="{{.}}" {{checked}} /> {{.}}
</label>
{{/each}}
</template>

<template name="carList">
<ul>
{{#each cars}}
<li>{{make}} {{color}}</li>
{{/each}}
</ul>
</template>
if (Meteor.isClient) {
Cars = new Meteor.Collection(null);

Meteor.startup(function () {
Cars.remove({});
Cars.insert({make: 'toyota', color: 'red'});
Cars.insert({make: 'subaru', color: 'green'});
Cars.insert({make: 'ford', color: 'brown'});
Cars.insert({make: 'honda', color: 'white'});
Cars.insert({make: 'datsun', color: 'yellow'});
Cars.insert({make: 'doge', color: 'yellow'});
});

// return a unique list of colors from the Cars collection
Template.filter.colors = function () {
return _.uniq(Cars.find().map(function (car) { return car.color; }));
};

Session.setDefault('colors', []);

// if any checkbox was clicked, map across all checked inputs, and
// store resulting array of colors in session variable
Template.filter.events({
'click input[type=checkbox]': function (ev, tpl) {
var colors = tpl.$('input:checked').map(function () {
return $(this).val();
});
Session.set('colors', $.makeArray(colors));
}
});

// attribute helper for checked colors
Template.filter.checked = function () {
if (_.contains(Session.get('colors'), this.toString())) {
return {checked: true};
}
};

// return all cars with that have a color in the session variable
Template.carList.cars = function () {
return Cars.find({color: {$in: Session.get('colors')}});
};

}

关于mongodb - 使用复选框过滤集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23797663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com