go - 如何在{{define“…”}}的gotemplate中为&lt;input&gt;和<label>标签创建唯一的ID?

标签 go go-templates go-html-template

使用{{ define "something" }},我们可以重用一些html代码:

{{ template "something" . }}
{{ template "something" . }}
{{ template "something" . }}

这很棒,但有时(诚实地说经常)我们需要使用id。最常见的情况是编写带有输入和带有“for”属性的标签的表单。对于某些东西也是如此。

但是如果我写这样的话:
{{ define "something" }}
<label for="best-input">Best label</label>
<p>...</p>
<input  id="best-input">
{{ .some.data.I.need.from.dot.var }}
{{ end }}

{{ template "something" . }}
{{ template "something" . }}
{{ template "something" . }}

当然,我将获得3个具有相同ID的输入。因此,我的标签将工作错误,并且控制台中将出现警告。

另外,我什至不能写{{ template "t" "id1" }} {{template "t" "id2" }},因为我需要'。'。也可变。

那么,我该如何解决呢?有什么简单的方法吗?

最佳答案

所以..我只需要...

{{ define "something" }}

{{ $id := uniqueId }}

<label for="{{ $id }}">Best label</label>
<p>...</p>
<input  id="{{ $id }}">
{{ .some.data.I.need.from.dot.var }}
{{ end }}

{{ template "something" . }}
{{ template "something" . }}
{{ template "something" . }}

其中uniqueId-只是template.FuncMap中定义的函数

关于go - 如何在{{define“…”}}的gotemplate中为&lt;input&gt;和<label>标签创建唯一的ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60195905/

相关文章:

postgresql - 插入关系 go-pg PostgreSQL

go - ExecuteTemplate (template.ParseGlob) 加载空白页

模板中的 Golang 模板全局点,其值来自范围

mongodb - 如何使用 mgo 和 Go 查询具有日期范围的 MongoDB?

mysql - 使用占位符?在 Go mySql 中查询除 int 以外的任何内容

golang : difference between var b Buffer and bytes. 缓冲区{}

kubernetes-helm - 如何从 values.yaml 替换 bool 值

go - 如果条件在 golang 模板中的范围内嵌套

Go - html/template、template.ParseGlob() 和代码重用

go - 如何在 HTML 模板中不转义