首页 > 后端开发 > Golang > 如何在 Go 中动态更新模板部分?

如何在 Go 中动态更新模板部分?

Linda Hamilton
发布: 2024-12-24 10:52:15
原创
519 人浏览过

How to Dynamically Update Template Partials in Go?

在 Go 中动态更新模板部分

在 Go 中,修改变量时刷新模板的一部分的能力并不是天生的支持。要实现此功能,必须实现自定义解决方案。

实现步骤:

  1. 重构模板:提取渲染使用 {{define "Addresses"}} 或 {{block 将地址放入单独的模板块中"Addresses"}}.
  2. 修改/创建处理程序: 创建一个专门执行 Addresses 模板并将输出发送到 HTTP 响应的处理程序。该处理程序可以独立使用,也可以在整个页面模板的处理程序中使用。
  3. 客户端逻辑:在客户端,当需要时,对地址处理程序执行 AJAX 调用更新显示的地址。将 Addresses 包装元素的内容替换为 AJAX 调用的响应。

详细步骤:

  1. 模板重构:

    {{define "Addresses"}}
      <ul>
      {{range $key, $value := .Addresses}}
     <li>{{ $key }}: {{ $value }}</li>
      {{end}}
      </ul>
    {{end}}
    登录后复制
  2. 处理程序修改:

    import "net/http"
    
    func AddressesHandler(w http.ResponseWriter, r *http.Request) {
      data := map[string]string{"Addresses": []string{"Address1", "Address2"}}
      t, err := template.New("AddressesTemplate").Parse("{{define "Addresses"}}{{.Addresses}}{{end}}")
      if err != nil {
     http.Error(w, http.StatusInternalServerError.String(), http.StatusInternalServerError)
     return
      }
      err = t.ExecuteTemplate(w, "Addresses", data)
      if err != nil {
     http.Error(w, http.StatusInternalServerError.String(), http.StatusInternalServerError)
     return
      }
    }
    登录后复制
  3. 客户端实现:

    var addressesElement = document.getElementById("addresses");
    
    function refreshAddresses() {
      var xhr = new XMLHttpRequest();
      xhr.open("GET", "/addresses", true);
      xhr.onreadystatechange = function() {
     if (xhr.readyState === 4 && xhr.status === 200) {
       addressesElement.outerHTML = xhr.responseText;
     }
      };
      xhr.send();
    }
    登录后复制

替代框架:

Gowut 是一个 Go Web 框架,为动态部分更新提供类似的功能网页。

以上是如何在 Go 中动态更新模板部分?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板