gpt4 book ai didi

javascript - 更新变量时动态刷新模板的一部分golang

转载 作者:IT王子 更新时间:2023-10-29 01:09:59 25 4
gpt4 key购买 nike

在 Golang 中,可以在更新变量时刷新模板的一部分吗?这是我们可以在 Angular.js 中找到的东西。

基本上在我的代码中,我通过 ajax 中的邮政编码查找地址,它显示了我为该邮政编码找到的地址列表。

这是模板的示例: enter image description here

此刻,ajax 调用了一个 GO 例程。我不想在 JS 中获取结果并根据 ajax 调用的结果构建 html。

如果可能的话,我想只更新 Addresses 值(它是一个数组),因为我已经动态构建了 addr 列表。

有什么线索吗?

最佳答案

模板引擎不支持这种开箱即用的方式。

所以你必须自己实现它。这并不难。以下是实现它应遵循的步骤:

1。重构您的模板

使用 {{define "name"}} 操作将呈现地址的模板分开。您可以将它放在不同的模板文件中,并使用 {{template "name"}} 操作将其包含在当前位置,或者您可以将其留在原来的位置并使用新的 {{block "name"pipeline}} T1 {{end}} 定义模板并立即执行的操作(在 Go 1.6 中引入)。

2。修改/创建处理程序

确保您有一个处理程序只执行这个呈现收件人的新模板。执行 Addressees 模板的结果应该直接发送到输出 (w http.ResponseWriter)。

请注意,您可以使用 1 个处理程序来执行“完整”页面模板和仅执行收件人模板(例如,根据 URL 参数决定),或者您可能有 2 个不同的处理程序,这完全取决于您。

3。修改客户端

现在在客户端,当您想要刷新/重新呈现 Addressees 时,对仅执行和呈现 Addressees 模板的处理程序进行 AJAX 调用。

当这个 AJAX 调用完成时,您可以简单地使用 AJAX 调用的响应文本来替换 Addressees 包装器标签的 HTML 内容。

它可能看起来像这样:

var e = document.getElementById("addressees");
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
e.outerHTML = xhr.responseText;
}
}
xhr.open("GET", "path-to-addresses-render", true);
try {
xhr.send();
} catch (err) {
// handle error
}

Gowut (这是一个使用纯 Go 构建单页 Web 应用程序的 Web 框架)做了一些类似的事情,只更新网页的一部分而不重新加载整个页面(尽管它不在后端使用模板)。 (披露:我是 Gowut 的作者。)

您可以在其 js.go 中查看 Gowut 如何执行的确切 Javascript 代码文件(查找 rerenderComp() Javascript 函数)。

关于javascript - 更新变量时动态刷新模板的一部分golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37118281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com