我正在使用Go的“ net / http”包在html和Go后端之间传递数据。例如,我们可以使用如下图像的位置:
<img src={{.MyPicture}} width=200 height=auto/>
我们可以做同样的事情将函数传递给html并调用它们:
{{if .MyBool}}
{{.MyFunction}}
{{end}}
现在我的问题是:如何设置按钮的响应以调用我的函数?我希望这能奏效,但不会:
<button onclick={{.ShowMoreLinks}}>Show more!</button>
我得到“ [js]声明或声明”。我曾尝试将其包装在脚本中(内联和标头中),但这些似乎都不起作用。 JS无法处理传入的变量。
答案 0 :(得分:1)
实际上,您正在使用Go的模板机制来准备发送到浏览器的HTML。这只会填充占位符,最终只会生成一个字符串(在本例中为HTML),该字符串将通过网络发送到浏览器进行解释。该浏览器只能通过“ onclick”之类的事件来处理与用户的交互。此外,这些事件必须是Javascript代码,例如JS表达式或函数调用:
onclick="jsFunction()"
您可以使Go模板提供在占位符中调用的功能:
onclick="{{.JSFuncCall}}"
此处“ .JSFuncCall”必须评估为您必须在JS客户端代码中定义的某些JS函数名称(以及进行调用的括号)。然后,该Javascript函数可以通过一些特定的URL对服务器进行XHR调用,从而触发Go处理程序,运行您要运行的Go代码,然后返回一个响应,然后可以在JS函数中进行处理。