Templates 从go html模板中的父对象访问变量
我有递归的go html模板,用于显示对帖子的回复,最上面的父对象包含一个名为Templates 从go html模板中的父对象访问变量,templates,recursion,go,Templates,Recursion,Go,我有递归的go html模板,用于显示对帖子的回复,最上面的父对象包含一个名为Random的字段和一个名为replets的字段,我递归回复,没有Random字段,但我希望在每个回复中使用相同的Random字段 当我尝试这样做时,它只会深入两个回复(我假设是因为$只引用父对象,而不是“top”父对象) 编辑:更多代码。thread是传递给模板thread的原始对象。回复以递归方式循环,但不包含thread.Random字符串。我希望使thread.Random字符串对所有子级全局可用,而无需重新构
Random
的字段和一个名为replets
的字段,我递归回复,没有Random
字段,但我希望在每个回复中使用相同的Random
字段
当我尝试这样做时,它只会深入两个回复(我假设是因为$
只引用父对象,而不是“top”父对象)
编辑:更多代码。thread
是传递给模板thread的原始对象。回复
以递归方式循环,但不包含thread.Random
字符串。我希望使thread.Random
字符串对所有子级全局可用,而无需重新构造结构
type thread struct {
Random string
Body string
Title string
Replies []*reply
}
type reply struct {
Body string
Title string
Replies []*reply
}
模板:
<html>
<body>
<div id="posts">
<p>.Title</p>
<p>.Body</p>
{{define "replies"}}
<ul>
{{ range $key, $value := .Replies }}
<p>$value.Title</p>
<p>$value.Body</p>
<p>$.Random</p>
{{template "replies" . }}
</li>
{{end}}
</ul>
{{end}}
<div id="posts">
<div class="replyPost">{{ template "replies" .}}</div>
</div>
</body>
</html>
.头衔
.正文
{{定义“回复”}
{{range$key,$value:=.repress}
$value.标题
$value.Body
$.Random
{{模板“回复”。}
{{end}
{{end}
{{模板“回复”。}
任何您想在模板中访问的内容都必须传递给它。没有“此结构最初是某个其他结构的字段,我想神奇地访问此其他结构”这样的事情.如何定义回复
?它是一个切片还是什么?请添加最小的工作go
示例。$
引用传递给模板的任何内容,这是模板可以访问的内容。如果模板需要访问其他内容,则必须作为字段从$
访问它。对象不允许有“parents”。我没有要求“magic”,我要求的是逻辑。有没有一种方法可以根据parents数据递归设置父级的子级字段?这不需要“magic”。我们谈论的是范围。@你评论中的问题与原来的问题完全不同。任何问题都是因为你不喜欢它仍然适用的答案。不,绝对不可能。