【问题标题】:How can I check checkboxes (or not) based on the value of a field in a Document (Meteor)?如何根据文档(流星)中字段的值检查复选框(或不检查)?
【发布时间】: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


    【解决方案1】:

    不确定我完全确定您在问什么,但您可以使用 this._idthis.someField 在帮助器中访问当前行/车把迭代中项目的值

    如果我没看错的话,可能是这样的:

    Template.matchWorkersWithJobLocs.helpers({
      getJobsLocs: function() {
        var job = this.jobLocs.jl_jobloc;
        return WorkersJobLocsLookup.findOne({
          fieldWithJobLoc: job
        });
      }
    });

    如果您尝试返回多个结果,请使用find,而不是findOne,并且您可能希望将其放在if (Template.instance().subscriptionsReady()) {} 函数中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-22
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 2020-08-23
      相关资源
      最近更新 更多