【发布时间】:2015-12-28 19:06:41
【问题描述】:
我需要从 MongoDB 集合中读取值,然后根据文档中与复选框值匹配的字段检查(或不检查)Meteor 模板中的复选框。
为了先退后一步,我使用如下复选框填充模板:
<div id="seljoblocs" name="seljoblocs">
{{#each jobLocs}}
<input type="checkbox" value={{jl_jobloc}}><label>{{jl_jobloc}}</label>
{{/each}}
</div>
...从模板的“jobLocs”助手中填充值和标签:
jobLocs: function() {
return JobLocations.find({}, {
sort: {
jl_jobloc: 1
},
fields: {
jl_jobloc: 1
}
});
}
当从“工人”输入选择元素中进行选择时,我可以像这样记录选择了哪个工人:
Template.matchWorkersWithJobLocs.events({
'change #selworker': function(event, template) {
var workerid = template.find('#selworker').value;
// TODO: Add code to query Collection and then check the appropriate checkboxes
},
...这样我就可以选中找到匹配项的复选框(“匹配”表示该工作人员有资格被分配到该工作/位置)。 IOW,使用返回的文档字段值(jobloc),我想选中相应的复选框。
我的问题是,我该怎么做?
在以下 SpaceBars 循环中是否是这样(希望如此!):
{{#each jobLocs}}
<input type="checkbox" value={{jl_jobloc}}><label>{{jl_jobloc}}</label>
{{/each}}
...我可以有一个像这样的“isChecked”助手:
{{#each jobLocs}}
<input type="checkbox" value={{jl_jobloc}} {{isChecked}}><label>{{jl_jobloc}}</label>
{{/each}}
...根据此 Meteor 方法是否返回 true,返回空字符串或“已检查”字符串:
Template.matchWorkersWithJobLocs.helpers({
isChecked: function () {
var workerid = $('#selworker').val;
if (null == WorkersJobLocsLookup.findOne( {wjllu_workerid: workerid, wjllu_jobloc: jobLocs.jl_jobloc})) {
return '';
} else {
return 'checked';
}
}
这样,复选框将被选中(因为函数返回“checked”,即选中复选框),因为函数返回一个空字符串。
IOW,要深入了解,帮助器中空格键循环中的“jobLocs.jl_jobloc”字段是否可用/可访问,以便我可以查看它在 WorkersJobLocsLookup 集合中是否有相应的文档?
【问题讨论】:
标签: jquery mongodb checkbox meteor meteor-helper