当我在{{ 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" $ }}
...
在操场上跑。