在模板之间传递数据

xha*_*lix 2 go go-templates

我有一个简单的案例,其中模板(text/templates)包括这样的另一个

`index.html`

{{ template "image_row" . }}


`image_row.html`

{{ define "image_row" }}

   To stuff here

{{ end }}
Run Code Online (Sandbox Code Playgroud)

现在我想重用图像行模板.假设我想传递一个简单的数字,以便image_row模板根据此数字构建行

我想有类似的东西(其中5是附加参数)

index.html

{{ template "image_row" . | 5 }}
Run Code Online (Sandbox Code Playgroud)

在这种情况下我怎么能实现呢?

mko*_*iva 5

我不确定是否存在用于将多个参数传递给模板调用的内置解决方案,但是,如果没有一个,您可以定义一个合并其参数并将它们作为单个切片值返回的函数,然后就可以了注册该函数并在模板调用中使用它.

就像是:

func args(vs ...interface{}) []interface{} { return vs }
t, err := template.New("t").Funcs(template.FuncMap{"args":args}).Parse...
Run Code Online (Sandbox Code Playgroud)

然后,在你的index.html,你会这样做:

{{ template "image_row" args . 5 }}
Run Code Online (Sandbox Code Playgroud)

然后在您的image_row模板中,您可以使用内置index函数访问参数,如下所示:

{{ define "image_row" }}

   To stuff here {{index . 0}} {{index . 1}}

{{ end }}
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/gkdtvvJ1bb