下面的程序写
<html><body>Hello <script>[{"A":"foo","B":"bar"},{"A":"bar","B":"baz"}]</script></body></html>
由于
<script>
-Tag(它对字符串编码执行了一些JavaScript JSON)。没有<script>
-Tag,我怎么能得到相同的?那就是:我想写t, err := template.New("foo").Parse("<html><body>Hello <pre>{{.}}</pre></body></html>\n")
并得到
<html><body>Hello <pre>[{"A":"foo","B":"bar"},{"A":"bar","B":"baz"}]</pre></body></html>
背部?我已经在模板包中看到了上下文的
| ...
语法,但是应该使用哪个上下文?package main
import (
"html/template"
"log"
"os"
)
func main() {
type keyvalue struct {
A, B string
}
a := []keyvalue{{"foo", "bar"}, {"bar", "baz"}}
t, err := template.New("foo").Parse("<html><body>Hello <script>{{.}}</script></body></html>\n")
if err != nil {
log.Fatal(err)
}
err = t.ExecuteTemplate(os.Stdout, "foo", a)
if err != nil {
log.Fatal(err)
}
}
背景:我需要为X-Editable JavaScript library生成一个HTML属性,如下所示:
source="[{value: 1, text: 'text1'}, {value: 2, text: 'text2'}, ...]"
最佳答案
如果您对生成的HTML有“特殊需求”,则可以使用text/template
。
但也许在您的情况下,最好先将a
转换为字符串表示形式,然后将此字符串填充到呈现中。我认为这使您想做的事情更加清楚。
或者:编写您自己的过滤器函数(请参阅http://golang.org/pkg/html/template/#Template.Funcs),该函数将使用此字符串处理模板中的函数调用。
关于templates - html/template : how to get JavaScript (JSON) escaping without <script> tag?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18589973/