我有一个Golang数组,我正在传递给前端的html文件.
我知道
'{{ index .Array 0}}'
Run Code Online (Sandbox Code Playgroud)
工作并从数组中提取第一个元素.但我想做一个Javascript for循环并打印数组中的每个元素,就像这样
<script type="text/javascript">
function loop() {
html = ""
for(var i = 0; i<5; i++) {
html += "{{ index .Array " + i + "}}";
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.关于分离go数组索引字符串的东西,HTML/Javascript不喜欢它,它不会加载.
这是一个语法错误,我无法确定.
有任何想法吗?
我想看看传递给模板的上下文中的内容.我所做的基本上就是把点放在HTML中:
{{$.}}
HTML呈现时我得到的是:
{http://localhost:1315/blog/index.xml 0xc08fdf36g0 map[Pages:[]] Blog [] map[] 2016-04-07 15:34:03 -0700 PDT 2016-04-07 15:34:03 -0700 PDT { 0} {/blog/ http://localhost:1315/blog/ } false 0xc0825878d0 {{0 0} 1} <nil>}
我知道例如.Site内部.但它甚至没有出现在渲染的HTML中.如何以更易理解的形式获取上下文,以便在不知道它应该具有的所有属性的情况下看到它是什么?
我的项目需要基本的增量算法和循环,以保持模板可读并用值填充 9x9 网格。这些值存储在字符串数组中,因此必须能够控制索引。
这是我定义了两个模板函数的处理程序:
func HomeHandler(w http.ResponseWriter, req *http.Request) {
t := template.New("home.html").Funcs(template.FuncMap{
"loop": func(n int) []struct{} {
return make([]struct{}, n)
},
}).Funcs(template.FuncMap{
"inc": func(n int) int {
return n + 1
},
})
t, err := t.ParseFiles("templates/home.html")
if err != nil {
log.Print("template/home error:", err)
}
t.ExecuteTemplate(w, "home.html", nil)
}
Run Code Online (Sandbox Code Playgroud)
要创建网格,我使用循环函数,如下所示:
{{ range loop 3}}
<tbody>
{{ range loop 3}}
<tr>
{{ range loop 9}}
<td> <input value="1" type="text" name="value[]" maxlength="1" size="1">
{{end}}
{{end}}
{{end}}
Run Code Online (Sandbox Code Playgroud)
但是,我想使用我的数据将 input 元素的 value …
所以我想以某种方式将我{{ .blahblah }}在模板中定义的所有操作作为字符串切片。
例如,如果我有这个模板:
<h1>{{ .name }} {{ .age }}</h1>
Run Code Online (Sandbox Code Playgroud)
我希望能够得到[]string{"name", "age"}。假设模板具有方法func (t *Template) Fields() []string:
t := template.New("cooltemplate").Parse(`<h1>{{ .name }} {{ .age }}</h1>`)
if t.Fields() == []string{"name", "age"} {
fmt.Println("Yay, now I know what fields I can pass in!")
// Now lets pass in the name field that we just discovered.
_ = t.Execute(os.Stdout, map[string]string{"name": "Jack", "age":"120"})
}
Run Code Online (Sandbox Code Playgroud)
有没有办法检查这样的解析模板?
谢谢!
我正在研究golang web app.在那里我需要迭代HTML行n次数.
func index(w http.ResponseWriter, r *http.Request) {
tmpl := template.Must(template.ParseFiles("templates/index.html"))
n := 5
tmpl.Execute(w, n)
}
<ul>
<li><a href="/?page=1">1</a></li>
<li><a href="/?page=2">2</a></li>
.
.
.
<li><a href="/?page=n">n</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我该如何实现呢?
我是 golang 新手。我想将多个变量传递给html。所以我有这样的类型:
type Variables struct {
UserNames []string
Checks []string
}
Run Code Online (Sandbox Code Playgroud)
传递了正确值的页面变量
var PageVars Variables
PageVars = Variables{
UserNames: ulist,
Checks: check,
}
log.Println("ulist",ulist)
err = tpl.Execute(w, PageVars) //execute the template and pass it to index page
if err != nil { // if there is an error
log.Print("template executing error: ", err) //log it on terminal
}
Run Code Online (Sandbox Code Playgroud)
我想将用户名和检查传递给 html 模板,例如:
{{range .UserNames .Checks}}
{{.UserNames}}: <input type="checkbox" name="email" value={{. UserNames}} {{.Checks}}/><br />
{{end}}
Run Code Online (Sandbox Code Playgroud)
但没有成功。谁能纠正我的语法吗?多谢。
使用 go 模板,我一直在尝试呈现带引号的逗号分隔字符串列表
例如 "string1", "string2", "string3"
我想要呈现的字符串来自一个结构体。请参阅Tags此示例中的:
package main
import (
"fmt"
"log"
"os"
"strings"
"text/template"
)
const (
templateString = `{{range .Tags}}"{{.Name}}", {{end}}`
)
var (
funcs = template.FuncMap{
"join": strings.Join,
"quote": func(in string) string { return fmt.Sprintf("\"%s\"", in) },
}
renderData = Task{
Name: "something to do",
Description: "Do that thing",
Tags: &[]Tag{
Tag{Name: "tag1"},
Tag{Name: "tag2"},
},
}
)
func main() {
tmpl, err := template.New("master").Funcs(funcs).Parse(templateString)
if err != nil {
log.Fatal(err)
}
if …Run Code Online (Sandbox Code Playgroud) 我想动态生成我的模板文件,这是我的情况:
{{- $v := (.Files.Get "values-deployment-nginx.yaml") | fromYaml }}
spec:
{{- range $key, $value := $v.containers }}
containers:
- name: {{ $value.name }}
image: {{ .Values.{{ $value.name }}-image }}:{{ .Values.{{ $value.name }}--tag }}
Run Code Online (Sandbox Code Playgroud)
我想首先获得 {{ $value.name }},它可能是一个像“nginx”这样的字符串,然后我想使用 {{ .Values.nginx-image }} 在值文件中获取正确的图像值.
有没有办法做到这一点?非常感谢!
我有很多动态生成的部署模板,但只想将图像和标签公开到值文件,以便我们可以在安装图表时传递不同的图像信息。其他变量在 (.Files.Get "values-deployment-nginx.yaml") 中,像这样(也是动态生成的)。所以在生成模板时,我想匹配值文件中的图像和标签。
像这样的值文件:
deployment-nginx-imagerepo: nginx
deployment-nginx-imagetag: latest
Run Code Online (Sandbox Code Playgroud)
values-deployment-nginx.yaml 像这样(由其他项目生成):
autoscale: []
containers:
- envs: []
imagerepository: nginx
imagetag: latest
itemid: n79fecd51_6716_fa65_5e64_aeed8ed6ab7e
name: nginx
resource:
maxcpu: ""
maxmemory: ""
mincpu: "0.5"
minmemory: 512m
volumemounts: [] …Run Code Online (Sandbox Code Playgroud) 在go模板中,我想获取循环中的最后一条消息,以在循环外使用:
{{range $m := .messages}}
<div>Message subject: {{$m.Subject}}</div>
{{$lastMsg := $m}}
{{end}}
<div>The last message's subject: {{$lasMsg.Subject}}</div>
Run Code Online (Sandbox Code Playgroud)
但这不起作用,并且出现此错误:
undefined variable "$lastMsg"
Run Code Online (Sandbox Code Playgroud)
我也尝试过,{{.lastMsg := $m}}但随后得到:
unexpected ":=" in operand
Run Code Online (Sandbox Code Playgroud)
那么我该如何解决呢?
我正在尝试使用 helm 模板助手values.yaml根据每个列表成员中的一个键的值从我的文件中的列表中过滤掉值。
我的图表目前由这些文件组成 -
values.yaml -
namespaces:
- name: filter
profiles:
- nonProduction
- name: dont-filter
profiles:
- production
clusterProfile: production
Run Code Online (Sandbox Code Playgroud)
模板/命名空间.yaml
apiVersion: v1
kind: List
items:
{{ $filteredList := include "filteredNamespaces" . }}
{{ range $filteredList }}
{{ .name }}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)
模板/_profile-match.tpl
{{/* vim: set filetype=mustache: */}}
{{- define "filteredNamespaces" -}}
{{ $newList := list }}
{{- range .Values.namespaces }}
{{- if has $.Values.clusterProfile .profiles -}}
{{ $newList := append $newList . }}
{{- …Run Code Online (Sandbox Code Playgroud) go-templates kubernetes kubernetes-helm sprig-template-functions