Gui*_*gis 6 javascript ajax templates refresh go
在 Golang 中,可以在更新变量时刷新模板的一部分吗?例如,这是我们可以在 Angular.js 中找到的东西。
基本上在我的代码中,我通过 ajax 中的邮政编码查找地址,它显示了我为此邮政编码找到的地址列表。
目前,ajax 调用了一个 GO 例程。我不想在 JS 中获得结果并从 ajax 调用的结果构建 html。
如果可能,我想只更新 Addresses 值(它是一个数组),因为我已经动态构建了 addr 列表。
任何线索?
模板引擎不支持这种现成的。
所以你必须自己实现它。这并不难。以下是您应该遵循的步骤来实现它:
使用操作分离将地址呈现为独立的模板{{define "name"}}。您可以将它放在不同的模板文件中并通过使用{{template "name"}}action将其包含在当前位置,或者您可以将其保留在原始位置并使用{{block "name" pipeline}} T1 {{end}}定义模板并立即执行的新动作(在 Go 1.6 中引入)。
确保您有一个处理程序,它只执行呈现收件人的新模板。执行 Addressees 模板的结果应直接发送到输出 ( w http.ResponseWriter)。
请注意,您可以使用 1 个处理程序来执行“完整”页面模板和仅 Addressees 模板(例如根据 URL 参数决定),或者您可能有 2 个不同的处理程序,这完全取决于您。
现在在客户端,当您想要刷新/重新呈现 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
}
Run Code Online (Sandbox Code Playgroud)
Gowut(它是一个使用纯 Go 构建单页 Web 应用程序的 Web 框架)做了一些类似的事情,即只更新网页的一部分而不重新加载整个页面(尽管它在后端不使用模板)。(披露:我是 Gowut 的作者。)
您可以在 Gowut 的js.go文件中查看确切的 Javascript 代码(查找rerenderComp()Javascript 函数)。
| 归档时间: |
|
| 查看次数: |
5501 次 |
| 最近记录: |