我能找到的大多数例子都描述了非常简单/基本的东西,比如显示人物对象的属性,如下所示:
The name is {{.Name}}. The age is {{.Age}}.
Run Code Online (Sandbox Code Playgroud)
如果你有一个更复杂的网页会发生什么,例如,多个不同的对象和对象列表,即你如何做这样的事情:
{{p.Name}} is aged {{p.Age}}.
Outstanding invoices {{invoices.Count}}
<table>
<tr><td>{{invoices[0].number}}</td></tr>
.... etc...
Run Code Online (Sandbox Code Playgroud)
您可以声明并传入一个匿名结构,如下所示:
templ.Execute(file, struct {
Age int
Name string
}{42, "Dolphin"})
Run Code Online (Sandbox Code Playgroud)
并访问变量,如:
{{.Age}}, {{.Name}}
Run Code Online (Sandbox Code Playgroud)
虽然这仍然需要你制作一个结构,但它是最简洁的方法之一.你必须决定它是否对你来说太难看了;)
你可以把你的更复杂的数据结构到,并通过它就像你Name和Age.例如,
type vars struct {
P User
Invoices []Invoice
}
type User struct {
Name string
Age int
}
type Invoice {
Number int
Description string
}
Run Code Online (Sandbox Code Playgroud)
如果将实例传递vars给模板执行,则可以使用点和数组索引来引用子结构,就像在常规go代码中一样.
{{.P.Name}}, {{.P.Age}}, {{.Invoices[0].Number}}
Run Code Online (Sandbox Code Playgroud)