流星如何在表单中访问不同的文档

Meteor how to access different documents in a form

本文关键字:文档 访问 表单 流星      更新时间:2023-09-26

我有一个简单的表单,它使用几个不同的助手:

<select class="form-control">
    {{#each openTables}}
        <option>Table {{tableNumber}}</option>
    {{/each}}
</select>
<select id="working-servers" class="form-control">
    {{#each workingServers}}
        <option>{{name}}</option>
    {{/each}}
</select>
<input id="num-of-guests-select" type="text" value="" name="num-of-guests-select">

openTablesworkingServers 是访问不同集合的全局助手

Template.registerHelper('openTables', () => {
    let openTables = CurrentTables.find({occupied : false});
    if(openTables) {
        return openTables;
    }
})
Template.registerHelper('workingServers', () => {
    let servers = Servers.find({working : true});
    if(servers) {
        return servers;
    }
});

的问题基本上是:我正在尝试使用表单中的信息更新该CurrentTables集合中的文档。

Template.newTableModal.events({
    'click #sendTable' : function(event, template) {
        event.preventDefault();
        event.stopPropagation();
    }
});

在该事件函数中,如何访问这些选择框的数据上下文?例如

{{#each workingServers}}
<option>{{name}}</option>
{{/each}}

workingServers中的每个对象都有一个 ID,我希望能够在该事件函数中访问该 ID:

CurrentTables.update(tableId?, {$set: {"serverId" : ??, "currentGuests" : ??}});

当我制作表格时,我如何访问与表单中的文档相关的文档?相反,我如何从该workingServers循环中选择的文档获取该serverId

有没有更好的方法来做这种事情,因为我将来需要能够做类似的形式?我的意思是我知道我可以取名字值, $("#working-servers").val()并在Servers集合中查找匹配的 ID,但这似乎真的很糟糕。

<select>
  <option value="1">Volvo</option>
  <option value="2">Saab</option>
  <option value="3">Opel</option>
  <option value="4">Audi</option>
</select>

value是选择时的返回值,则标签内的文本部分是显示的值。因此,请在value中使用您的 ID,这就是您在选择

{{#each workingServers}}
<option value={{serverId}}>{{name}}</option>
{{/each}}