2017-05-10 9 views
0

テンプレートファイルに変数を設定することは可能ですか{{$title := "Login"}}{{template "header" .}}を使用して別のファイルに解析しますか?Golangのテンプレートを使用してカスタム変数を解析する

私がしようとしてるものの例:

header.tmpl

{{define "header"}} 
<title>{{.title}}</title> 
{{end}} 

login.tmpl

{{define "login"}} 
<html> 
    <head> 
     {{$title := "Login"}} 
     {{template "header" .}} 
    </head> 
    <body> 
     Login Body! 
    </body> 
</html> 
{{end}} 

どのように私はこのカスタムの$ title変数を解析することができますが私はヘッダーテンプレートを作成しましたか?

答えて

1

@zznは、あるテンプレートの変数を別のテンプレートから参照することはできません。

目的を達成する1つの方法は、あるテンプレートから別のテンプレートに通過するテンプレートを定義することです。

header.html {{define "header"}} <title>{{template "title"}}</title> {{end}}

login.htmlと {{define "title"}}Login{{end}} {{define "login"}} <html> <head> {{template "header" .}} </head> <body> Login Body! </body> </html> {{end}}

あなたは "ヘッダー" テンプレート({{template header $title}}あるいは{{template header "index"}})を呼び出すときにもパイプラインとしてタイトルを通過することができしかし、それはあなたがそのテンプレートに他のものを渡すのを妨げるでしょう。

+0

おそらく私が探していたものに最も近いものです。ありがとうございました! :) – Acidic

1

いいえ、別のファイルに変数throughを解析することはできません。 thisに従って

変数のスコープは、それが宣言された制御構造(「IF」、「有する」、または「範囲」)の「終了」アクションに延びている、またはそれにそのような制御構造がない場合、テンプレートの終わり。 テンプレート呼び出しは、呼び出しのポイントから変数を継承しません。

+0

私が試していることをやり遂げるための方法はありますか? – Acidic

+0

は 'title'変数をgolangで定義し、' template.Execute'関数に渡します。 – zzn

+0

よろしくお願いします。 – Acidic

関連する問題