这里回答了类似的问题,但我认为它不能解决我的问题。
假设您具有以下结构:
type User struct { Username string Password []byte Email string ... }
而且,URL具有如下结构:example.com/en/users,其中"en"URL参数将传递给模板,如下所示:
example.com/en/users
"en"
renderer.HTML(w, http.StatusOK, "users/index", map[string]interface{}{ "lang": chi.URLParam(r, "lang"), "users": users})
在HTML模板中,我有以下内容:
{{ range .users }} <form action="/{{ .lang }}/users" method="POST"> <input type="text" name="Username" value="{{ .Username }}"> <input type="text" name="Email" value="{{ .Email }}"> </form> {{ end }}
现在,问题在于,由于{{ .lang }}不是该User结构的一部分,所以我得到了错误..那么如何{{ .lang }}在内部访问{{range .users }}?
{{ .lang }}
User
{{range .users }}
点(.)的内容$在调用后分配给range,因此您可以使用$进行访问lang(播放):
.
$
range
lang
{{ range .users }} <form action="/{{ $.lang }}/users" method="POST"> <input type="text" name="Username" value="{{ .Username }}"> <input type="text" name="Email" value="{{ .Email }}"> </form> {{ end }}
该行为记录在这里:
执行开始时,$将设置为传递给的数据参数Execute,即dot的起始值。
Execute
如果使用的是嵌套范围,则始终可以使用with语句或变量赋值语句回退以将点分配给其他对象。
with