我有一个简单的表单,它使用了几个不同的帮助器:
<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">
openTables
和workingServers
是访问不同集合的全局帮助程序
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:
CurrentTables.update(tableId?, {$set: {"serverId" : ??, "currentGuests" : ??}});
当我制作表单中的文档时,如何访问这些文档?相反,如何从serverId
循环中选择的文档中获取workingServers
。
有没有更好的方法来做这种事情,因为我需要能够在将来做类似的表格?我的意思是我知道我可以取名字值,
$("#working-servers").val()
并在Servers
集合中查找匹配的ID,但这看起来非常糟糕。
答案 0 :(得分:0)
<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}}