将Go功能传递给html / js按钮“onclick”响应

问题描述 投票:-1回答:1

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

javascript html go button go-templates
1个回答
1
投票

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

onclick="jsFunction()"

您可以让Go模板提供在占位符中调用的函数:

onclick="{{.JSFuncCall}}"

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

© www.soinside.com 2019 - 2024. All rights reserved.