我的項目需要基本的增量算法和循環(huán),以保持模板的可讀性并使用值填充 9x9 網(wǎng)格。這些值存儲在字符串數(shù)組中,因此必須能夠控制索引。這是我的處理程序,其中定義了兩個模板函數(shù):func HomeHandler(w http.ResponseWriter, req *http.Request) { t := template.New("home.html").Funcs(template.FuncMap{ "loop": func(n int) []struct{} { return make([]struct{}, n) }, }).Funcs(template.FuncMap{ "inc": func(n int) int { return n + 1 }, }) t, err := t.ParseFiles("templates/home.html") if err != nil { log.Print("template/home error:", err) } t.ExecuteTemplate(w, "home.html", nil)}要創(chuàng)建網(wǎng)格,我使用循環(huán)函數(shù),如下所示:{{ range loop 3}}<tbody> {{ range loop 3}} <tr> {{ range loop 9}} <td> <input value="1" type="text" name="value[]" maxlength="1" size="1"> {{end}} {{end}}{{end}}但是,我想使用我的數(shù)據(jù)將 input 元素的 value 屬性設(shè)置為正確的值。我相信我可以通過以下方式訪問索引:{{index .MyArray 3}}我將用我需要能夠正確遞增的計數(shù)器替換“3”。不幸的是,我似乎無法正確地重新分配變量,因為我最多只能將它從 0 增加到 1。這是我的計數(shù)器模板:{{$count := 0}}{{ range loop 3}}<tbody> {{ range loop 3}} <tr> {{ range loop 9}} {{$count := inc $count}} <td> <input value="1" type="text" name="value[]" maxlength="1" size="1"> {{end}} {{end}}{{end}}
1 回答

jeck貓
TA貢獻1909條經(jīng)驗 獲得超7個贊
反過來如何做呢,因為模板可以輕松地對實際數(shù)據(jù)進行測距?你可以不用loop和inc開始
{{ range $index, $value := .MyArray }}
<td><input value="{{ $value }}" type="text" name="value[]" maxlength="1" size="1">
{{ end }}
這將為您提供所需的所有輸入,但沒有周圍的標記,那么我們?nèi)绾潍@得呢?一點點模運算。像這樣定義一個模板函數(shù):
"each": func(interval, n int) bool {
return n % interval == 0
}
然后我們可以把事情搞定:
{{ range $index, $value := .MyArray }}
{{ if each 27 $index }}<tbody>{{ end }}
{{ if each 9 $index }}<tr>{{ end }}
<td><input value="{{ $value }}" type="text" name="value[]" maxlength="1" size="1">
{{ end }}
- 1 回答
- 0 關(guān)注
- 175 瀏覽
添加回答
舉報
0/150
提交
取消