2017-08-21 15 views
-1

投稿に返信を表示するための再帰的なgoogleテンプレートがあり、トップの親オブジェクトにRandomというフィールドがあり、Repliesというフィールドが含まれています。 Randomフィールドがありますが、それぞれの返信に同じRandomフィールドを使用したいと思います。 。。より多くのコードthreadがに渡された元のオブジェクトである:私はこれをしようとするとgo htmlテンプレートの親オブジェクトから変数にアクセス

それだけで($のみ親オブジェクトではなく、「トップ」の親オブジェクトを参照するので、私は仮定

EDIT 2件の回答深い行きます。テンプレートは、thread.Repliesは再帰的に掛けているが、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>             
+1

「返信」はどのように定義しますか?それはスライスか何のスライスですか?最低限の 'go'の例を追加してください。 – putu

+0

'$'はテンプレートに渡されたものを参照します。これはテンプレートがアクセスできるものです。テンプレートが他のものへのアクセスを必要とする場合は、フィールドとして '$'から到達可能でなければなりません。オブジェクトには「親」はありません。 – Adrian

答えて

0

テンプレートにアクセスしたいものはすべてそれに渡す必要があります。 "この構造体はもともと他の構造体のフィールドであり、私はこの他の構造体に魔法のようにアクセスしたい"というようなことはありません。

+0

私は "魔法"を求めなかった、私は論理を求めた。親のデータに基づいて親の子のフィールドを再帰的に設定する方法はありますか?これは「魔法」を必要とすべきではありません。私たちは範囲について話しています。 – hermancain

+0

@hermancainあなたのコメントの質問は、元のコメントとはまったく異なります。どんな理由があるとしても、答えがまだ好きではないからです。いいえ、絶対不可能です。 – Volker

関連する問題