在Go模板的循环中调用子模板

  • 本文关键字:调用 Go 循环 go templates
  • 更新时间 :
  • 英文 :


当我在{{ range }}循环外导入子模板时,变量在导入的模板内成功传递:

...
{{ template "userdata" . }}
...

(在这里,我可以访问内部模板userdata中的外部模板变量)。到目前为止一切顺利。

然而,相同的时尚导入在{{ range }}循环中调用时不起作用:

...
{{ range $instance := .Instances }}
- type: instance
metadata:
userdata: {{ template "userdata" . }}
...

上面的以错误消息结束,如:

Error: template: template.tmpl:3:46: executing "userdata" at <XXX>: can't evaluate field XXX in type int`

据我所知,它用循环迭代器变量遮蔽了我的上下文变量,所以它不起作用。

我该如何正确地做这件事?

如何在范围循环之外将.的值传递给模板userdata"在范围循环中?

.的值赋给一个变量。在循环中使用变量:

...
{{$x := .}}
{{ range $instance := .Instances }}
- type: instance
metadata:
userdata: {{ template "userdata" $x }}
...

如果.是模板中的根值,那么使用$来引用该值:

...
{{ range $instance := .Instances }}
- type: instance
metadata:
userdata: {{ template "userdata" $ }}
...

在操场上跑。

相关内容

  • 没有找到相关文章

最新更新