英文:
In a template how do you access an outer scope while inside of a "with" or "range" scope?
问题
当在with
或range
中时,.
的作用域会发生变化。如何访问调用的作用域?
英文:
When inside a with
or range
, the scope of .
is changed. How do you access the calling scope?
答案1
得分: 84
{{with .Inner}}
外部: {{$.OuterValue}}
内部: {{.InnerValue}}
{{end}}
$
在 text/template 文档中有详细说明:
> 当执行开始时,$ 被设置为传递给 Execute 的数据参数,也就是 dot 的初始值。
英文:
{{with .Inner}}
Outer: {{$.OuterValue}}
Inner: {{.InnerValue}}
{{end}}
$
is documented in the text/template docs:
> When execution begins, $ is set to the data argument passed to Execute, that is, to the starting value of dot.
答案2
得分: 29
你可以使用一个变量保存调用范围:
{{ $save := . }}
{{ with .Inner }}
外部值:{{ $save.OuterValue }}
内部值:{{ .InnerValue }}
{{ end }}
英文:
You can save the calling scope with a variable:
{{ $save := . }}
{{ with .Inner }}
Outer: {{ $save.OuterValue }}
Inner: {{ .InnerValue }}
{{ end }}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论