我正在使用Express和Handbars,所以我有一个视图,当客户端从 select 标签中选择一个选项时,我想在该视图中显示有关事件的信息,首先,我有一些信息问题:
我试图使该助手可以从视图的html中包含的脚本进行访问,但是后来我意识到,与在应用程序上声明该助手是相同的。 还尝试使用JavaScript获取标记值并将其返回给html,但这两种方法均无效。
<div class="col-sm-3">
<div>
<label for="zoneSelect"><span class="control-label badge badge-light">Zone monitoring</span></label>
</div>
<div>
<select id="zoneSelect" class="custom-select" onchange="{{eventHandler selectedOptionValue }}">
{{getZones zones}}
</select>
</div>
</div>
getZonas: function(zonas) {
var str;
zonas.forEach(element => {
str += '<option value="'+element._id+'">' + element.nombre + '</option>';
});
return new Handlebars.SafeString(str);
}
所以,我的想法是从选择中发送选定的选项,并将其发送给使用该信息的帮助程序,如代码所示。
上面的助手是为选择下拉列表构建options标记,区域是从数据库中检索的json数据。
答案 0 :(得分:0)
看起来您搞砸了前端和后端。事件处理发生在前端。处理代码应该是您视图的一部分,而不是后端。
<script>
function onZoneSelect (value) {
// Real action here
console.log('ZONE', value);
}
</script>
<select id="zoneSelect" class="custom-select" onchange="onZoneSelect(this.value)">
<!-- This code could be generated on backend with handlebars -->
<!-- BEGIN -->
<option value="Z01">Zone 01</option>
<option value="Z02">Zone 02</option>
<option value="Z03">Zone 03</option>
<option value="Z04">Zone 04</option>
<option value="Z05">Zone 05</option>
<!-- END -->
</select>