如何根据文档(Meteor)中字段的值检查(或不检查)复选框?
How can I check checkboxes (or not) based on the value of a field in a Document (Meteor)?
我需要从 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
}
});
}
当 selection 由 "worker" 输入 select 元素组成时,我可以注意到哪个工人被 selected 像这样:
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
},
...这样我就可以选中找到匹配项的复选框("match" 表示该工作人员有资格分配到 job/location)。 IOW,使用返回的文档字段值 (jobloc),我想选中相应的复选框。
我的问题是,我该怎么做?
是否(希望如此!)在以下空格键循环中:
{{#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}}
...returns 空字符串或字符串 "checked" 取决于此 Meteor 方法是否 returns 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';
}
}
这样,复选框将被选中(因为函数 returns "checked" 选中了复选框)或不被选中,因为函数 returns 是一个空字符串。
IOW,要了解细节,是助手中空格键循环 available/accessible 中的 "jobLocs.jl_jobloc" 字段,这样我就可以查看它是否在 WorkersJobLocsLookup 集合中有相应的文档?
不确定我是否完全确定你在问什么,但你可以使用 this._id
或 this.someField
如果我没看错的话,可能是这样的:
Template.matchWorkersWithJobLocs.helpers({
getJobsLocs: function() {
var job = this.jobLocs.jl_jobloc;
return WorkersJobLocsLookup.findOne({
fieldWithJobLoc: job
});
}
});
如果您尝试 return 多个结果,请使用 find
,而不是 findOne
,并且您可能希望将其放在 if (Template.instance().subscriptionsReady()) {}
函数中。
我需要从 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
}
});
}
当 selection 由 "worker" 输入 select 元素组成时,我可以注意到哪个工人被 selected 像这样:
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
},
...这样我就可以选中找到匹配项的复选框("match" 表示该工作人员有资格分配到 job/location)。 IOW,使用返回的文档字段值 (jobloc),我想选中相应的复选框。
我的问题是,我该怎么做?
是否(希望如此!)在以下空格键循环中:
{{#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}}
...returns 空字符串或字符串 "checked" 取决于此 Meteor 方法是否 returns 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';
}
}
这样,复选框将被选中(因为函数 returns "checked" 选中了复选框)或不被选中,因为函数 returns 是一个空字符串。
IOW,要了解细节,是助手中空格键循环 available/accessible 中的 "jobLocs.jl_jobloc" 字段,这样我就可以查看它是否在 WorkersJobLocsLookup 集合中有相应的文档?
不确定我是否完全确定你在问什么,但你可以使用 this._id
或 this.someField
如果我没看错的话,可能是这样的:
Template.matchWorkersWithJobLocs.helpers({
getJobsLocs: function() {
var job = this.jobLocs.jl_jobloc;
return WorkersJobLocsLookup.findOne({
fieldWithJobLoc: job
});
}
});
如果您尝试 return 多个结果,请使用 find
,而不是 findOne
,并且您可能希望将其放在 if (Template.instance().subscriptionsReady()) {}
函数中。