首頁 >後端開發 >Golang >如何在 Go 中動態更新模板部分?

如何在 Go 中動態更新模板部分?

Linda Hamilton
Linda Hamilton原創
2024-12-24 10:52:15519瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn