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