这个模板引擎不支持这个功能。
因此,您需要自己实现。这并不难。以下是您应该遵循的步骤:
使用{{define "name"}}
操作将呈现地址的模板分离出来,使其独立存在。您可以将其放在不同的模板文件中,并通过使用{{template "name"}}
操作将其包含在当前位置,或者您可以将其保留在原始位置并使用新的{{block "name" pipeline}} T1 {{end}}
操作(在Go 1.6中引入),它定义了模板并立即执行它。
确保您有一个仅执行呈现Addressees的新模板的处理程序。执行Addressees模板的结果应直接发送到输出(w http.ResponseWriter
)。
请注意,您可以使用一个处理程序来执行“完整”页面模板和仅Addressees模板(例如,基于URL参数决定),或者您可以拥有2个不同的处理程序,这真的取决于您。
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框架,类似地,在不进行完整页面重新加载的情况下更新Web页面的部分内容(尽管它不使用后端模板)。(披露:我是Gowut的作者。)
您可以在js.go
文件中查看Gowut如何执行精确的Javascript代码(查找rerenderComp()
Javascript函数)。