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

当我在{{ 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”?


慕丝7291255
浏览 98回答 1
1回答

慕神8447489

将 的值赋给.一个变量。在循环中使用变量:...{{$x := .}}{{ range $instance := .Instances }}- type: instance&nbsp; metadata:&nbsp; &nbsp; userdata: {{ template "userdata" $x }}...如果.是模板中的根值,则用于$引用该值:...{{ range $instance := .Instances }}- type: instance&nbsp; metadata:&nbsp; &nbsp; userdata: {{ template "userdata" $ }}...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go