Как сделать уникальный идентификатор для тегов <input>и <label>в gotemplate в {{define "..."}}? - PullRequest
0 голосов
/ 12 февраля 2020

С помощью {{ define "something" }} мы можем повторно использовать некоторый html код:

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

И это здорово, но иногда (честно довольно часто) нам нужно использовать идентификаторы. Наиболее распространенный случай - это когда вы пишете форму с входными данными и метками с атрибутом «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 входа с одинаковым идентификатором. Итак, мои ярлыки будут работать неправильно, и в консоли будут появляться предупреждения.

Кроме того, я даже не могу написать {{ template "t" "id1" }} {{template "t" "id2" }}, потому что мне нужно '.' переменная тоже.

Итак, как я могу это исправить? Есть ли простой способ?

1 Ответ

0 голосов
/ 13 февраля 2020

Итак ... все, что мне нужно, это ...

{{ 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...