亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 golang 的模板實現級聯下拉菜單

如何使用 golang 的模板實現級聯下拉菜單

Go
函數式編程 2021-09-27 17:43:50
設想:我有一個級聯場景,其中第二個下拉列表中的值取決于第一個。我有三個模板“布局”、“輸入”和“內部”。試圖:我正在對“輸入”模板中第一個下拉列表的更改進行 ajax 調用,并堅持處理返回的響應。目前我找到了一種通過替換第二個下拉列表的 html 來修復它的方法。但是,我認為這不是更好的處理方式。我想要一些不需要修改 html 的渲染模板。請幫助以更好的方式完成任務或指向一些維基。只有標準庫謝謝,Layout.html: http : //play.golang.org/p/LikKy6rf3-輸入.html: http : //play.golang.org/p/wM7EpPdXuM內部.html: http : //play.golang.org/p/xFpInKZfFTMain.go : http://play.golang.org/p/cxtJU-Lhi1
查看完整描述

1 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

在更高級別上,您有 2 個選擇:

  • 要么發送下拉列表的所有值(例如作為樹),并在更高級別的下拉列表更改時更改第 2 和第 3 級的值(適用于小列表,不適合大型數據集)

  • Or the one you chose: when selection changes, you make an AJAX call (triggered from onchange) and you populate the list from the results.

詳細說明 #2:從 AJAX 調用結果填充列表

您還有 2 個選項可以執行此操作:

  • AJAX 調用返回 HTML 調用,您可以簡單地使用它來替換 HTML<select>標記的內部 HTML 。

  • 或者 AJAX 調用可能只返回數據(例如使用 JSON 編碼),并且 Javascript 代碼可以構建列表的內容。

AJAX 返回 HTML

AJAX 調用可能會返回需要替換的完整 HTML 代碼作為<select>. 為了在服務器端實現這一點,您可以創建/分離僅負責生成此 HTML 代碼的 HTML 模板,例如:

{{define "innerList"}}

    {{range .}}

        <option value="{{.Key}}">{{.Text}}</option>

    {{end}}

{{end}}

您只能像這樣執行此模板:


// tmpl is the collection of your templates

values := ... // Load/construct the values

tmpl.ExecuteTemplate(w, "innerList", values)

這values是以下結構的一部分:


type Pair struct {

    Key string

    Text string

}

<select>使用 Javascript構建內容

AJAX 調用可能會返回一個 JSON 數據結構,value;text即您<option>自己添加子標簽的數組/對列表。


要將添加<option>到一個<select>標簽:


var x = document.getElementById("mySelect");

var option = document.createElement("option");

option.value = "1234";

option.text = "Kiwi";

x.add(option);

所以基本上你需要做的是刪除 的當前子項<select>,迭代作為響應接收的列表,并添加一個<option>由每個子項構造的新標簽。


查看完整回答
反對 回復 2021-09-27
  • 1 回答
  • 0 關注
  • 297 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號