Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 从go html模板中的父对象访问变量_Templates_Recursion_Go - Fatal编程技术网

Templates 从go html模板中的父对象访问变量

Templates 从go html模板中的父对象访问变量,templates,recursion,go,Templates,Recursion,Go,我有递归的go html模板,用于显示对帖子的回复,最上面的父对象包含一个名为Random的字段和一个名为replets的字段,我递归回复,没有Random字段,但我希望在每个回复中使用相同的Random字段 当我尝试这样做时,它只会深入两个回复(我假设是因为$只引用父对象,而不是“top”父对象) 编辑:更多代码。thread是传递给模板thread的原始对象。回复以递归方式循环,但不包含thread.Random字符串。我希望使thread.Random字符串对所有子级全局可用,而无需重新构

我有递归的go html模板,用于显示对帖子的回复,最上面的父对象包含一个名为
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”。我们谈论的是范围。@你评论中的问题与原来的问题完全不同。任何问题都是因为你不喜欢它仍然适用的答案。不,绝对不可能。