如何在Go模板中解析范围之外的变量?

时间:2014-07-21 11:05:10

标签: templates go

我有两个结构如下,我需要使用templates包在模板上呈现数据。我收到此错误

<.Email>: Email is not a field of struct type Notes

问题似乎是只有范围结构的字段似乎在范围循环中可用,所以我想知道如何从范围结构外部导入字段(例如电子邮件字符串)。

这种行为非常意外。

type notes struct{
    Note string
    sf string
}

type uis struct{
    notes []Note
    Email string
}

var ui uis

HTML

{{range .notes}}
    {{.Email}} {{.sf}}
    {{end}}

Email {{.Email}}

我检查过godocs但它们似乎没用。

1 个答案:

答案 0 :(得分:15)

来自文档:

  

执行开始时,$设置为传递给Execute的数据参数,即dot的起始值。

因此,你可以使用它:

{{range .notes}}
    {{$.Email}} {{.sf}}
{{end}}

Email {{.Email}}

(注意范围内的美元符号)

游乐场链接:http://play.golang.org/p/XiQFcGJEyR

旁注:下次尝试提供正确的代码和更好的解释。按照目前的情况,我我已经回答了这个问题,但我不能确定。您的代码无法编译 - 例如,类型名称错误/与成员混合,您有未导出的字段,因此模板无法访问它们。