解析带有数据的多个模板

How do i pass the data to the right template?

I have the following templates and want to parse them

layout.html:

<!DOCTYPE html>

<html>
    <head>
    ...
    </head>
    <body>
        <header>
        ...
        </header>
        <main>
            {{template "main"}}
        </main>
    </body>
</html>

list.html:

{{define "main"}}
{{range $index, $element := . }}    
    <div>
        <a href=#>{{ $element.Data1 }}</a>
        <p>{{ $element.Data2 }}</p>
        <p>{{ $element.Data3 }}</p>
    </div>
{{end}}
{{end}}

When i use this in the handler func only the "main" template is executed and i dont get the layout.

t, err := template.ParseFiles(layoutPath, templatePath)

t.ExecuteTemplate(w, "main", Data)

And with this i dont have the Data in the list template and so cant display the list.

t, err := template.ParseFiles(layoutPath, templatePath)

t.ExecuteTemplate(w, Data)

So how do i execute this properly?

From the docs:

{{template "name" pipeline}} The template with the specified name is executed with dot set to the value of the pipeline.

This means that to pass data from the layout.html template to the list.html template you need to pass the data as the second argument of the template action.

E.g. {{template "main" .}}