相关疑难解决方法(0)

如何传递多个对象去模板?

我能找到的大多数例子都描述了非常简单/基本的东西,比如显示人物对象的属性,如下所示:

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)

templates go

9
推荐指数
2
解决办法
5668
查看次数

嵌套 golang 模板中的变量

我想在 golang 模板中定义变量,而不是在二进制文件中,这样就不需要重新编译。

在 Go 中,我设置了一些变量:

var animals = map[string]string{
    "spirit_animal":    "cat",
    "spirit_predator":  "dog",
}
Run Code Online (Sandbox Code Playgroud)

我用这个执行模板:t.ExecuteTemplate(w, "main", variables)它将这些变量传递给模板。

现在我想将这些变量从 go 中取出到“主”模板中。

{{$spirit_animal:="cat"}} {{$spirit_animal}}
Run Code Online (Sandbox Code Playgroud)

我这样称呼子模板:

{{ template "navbar" . }}
Run Code Online (Sandbox Code Playgroud)

问题是嵌套模板(子模板)似乎无法访问任何变量。

文档中,“模板调用不会从其调用点继承变量。” 阅读“文本/模板”的文档,听起来变量可能无法在嵌套模板中使用。

关于如何将这些变量从二进制文件中取出并放入不需要在更改时重新编译的嵌套模板可访问的单个文本位置的任何建议?

templates go

6
推荐指数
1
解决办法
4602
查看次数

Go 模板中的请求上下文

我想在 Go HTML 模板中编写这样一个条件片段:

  {{if isUserAdmin}}
     <a href"/admin/nuke">Go to the big red nuclear button</a>
  {{end}}
Run Code Online (Sandbox Code Playgroud)

但是,这不可能直接实现,因为模板不知道触发其执行的请求,因此无法确定用户是否是管理员。

有没有一些正常的方法可以实现这一目标?

我提前指出:

  • 我不想使用管道来处理此特定数据(请参阅有关此问题的其他问题
  • 我承认只有处理程序/控制器应该处理逻辑,而视图应该只进行渲染。但条件{{if isUserAdmin}}本身并不是逻辑,它是利用控制器已经计算出的布尔值的必要构造。
  • Funcs方法可以提供帮助,但目前还不够精简,无法轻松定义特定方法isUserAdmin()

templates go

5
推荐指数
1
解决办法
2692
查看次数

如何将多个值从模板传递到模板?

我的City结构是这样的:

type City struct {
    ID      int
    Name    string
    Regions []Region
}  
Run Code Online (Sandbox Code Playgroud)

Region结构是:

type Region struct {
    ID               int
    Name             string
    Shops            []Destination
    Masters          []Master
    EducationCenters []Destination
}
Run Code Online (Sandbox Code Playgroud)

主要是我尝试这样做:

tpl.ExecuteTemplate(resWriter,"cities.gohtml",CityWithSomeData)
Run Code Online (Sandbox Code Playgroud)

是否可以在模板内部做这样的事情?

{{range .}}
        {{$city:=.Name}}
            {{range .Regions}}
                      {{$region:=.Name}}
                      {{template "data" .Shops $city $region}}
            {{end}}
{{end}}
Run Code Online (Sandbox Code Playgroud)

struct loops go slice go-templates

5
推荐指数
1
解决办法
4174
查看次数

在模板之间传递数据

我有一个简单的案例,其中模板(text/templates)包括这样的另一个

`index.html`

{{ template "image_row" . }}


`image_row.html`

{{ define "image_row" }}

   To stuff here

{{ end }}
Run Code Online (Sandbox Code Playgroud)

现在我想重用图像行模板.假设我想传递一个简单的数字,以便image_row模板根据此数字构建行

我想有类似的东西(其中5是附加参数)

index.html

{{ template "image_row" . | 5 }}
Run Code Online (Sandbox Code Playgroud)

在这种情况下我怎么能实现呢?

go go-templates

2
推荐指数
1
解决办法
1269
查看次数

标签 统计

go ×5

templates ×3

go-templates ×2

loops ×1

slice ×1

struct ×1