将Go函数传递给html / js按钮“ onclick”响应

时间:2018-09-08 01:09:29

标签: javascript html go button go-templates

我正在使用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无法处理传入的变量。

1 个答案:

答案 0 :(得分:1)

实际上,您正在使用Go的模板机制来准备发送到浏览器的HTML。这只会填充占位符,最终只会生成一个字符串(在本例中为HTML),该字符串将通过网络发送到浏览器进行解释。该浏览器只能通过“ onclick”之类的事件来处理与用户的交互。此外,这些事件必须是Javascript代码,例如JS表达式或函数调用:

onclick="jsFunction()"

您可以使Go模板提供在占位符中调用的功能:

onclick="{{.JSFuncCall}}"

此处“ .JSFuncCall”必须评估为您必须在JS客户端代码中定义的某些JS函数名称(以及进行调用的括号)。然后,该Javascript函数可以通过一些特定的URL对服务器进行XHR调用,从而触发Go处理程序,运行您要运行的Go代码,然后返回一个响应,然后可以在JS函数中进行处理。