为了账号安全,请及时绑定邮箱和手机立即绑定

在模板中,我怎样才能有一个计数器?

在模板中,我怎样才能有一个计数器?

Go
动漫人物 2022-01-17 10:47:00
我的项目需要基本的增量算法和循环,以保持模板的可读性并使用值填充 9x9 网格。这些值存储在字符串数组中,因此必须能够控制索引。这是我的处理程序,其中定义了两个模板函数: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)}要创建网格,我使用循环函数,如下所示:{{ 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}}但是,我想使用我的数据将 input 元素的 value 属性设置为正确的值。我相信我可以通过以下方式访问索引:{{index .MyArray 3}}我将用我需要能够正确递增的计数器替换“3”。不幸的是,我似乎无法正确地重新分配变量,因为我最多只能将它从 0 增加到 1。这是我的计数器模板:{{$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条经验 获得超7个赞

反过来如何做呢,因为模板可以轻松地对实际数据进行测距?你可以不用loop和inc开始


{{ range $index, $value := .MyArray }}

<td><input value="{{ $value }}" type="text" name="value[]" maxlength="1" size="1">

{{ end }}

这将为您提供所需的所有输入,但没有周围的标记,那么我们如何获得呢?一点点模运算。像这样定义一个模板函数:


"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 }}


查看完整回答
反对 回复 2022-01-17
  • 1 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信