Golang text/html/template에서 현재 템플릿의 이름을 템플릿에 데이터 요소로 전달하지 않고 액세스 할 수 있습니까?현재 템플릿 이름을 가져 옵니까?
감사합니다. 나는이를 바라고 있어요
Golang text/html/template에서 현재 템플릿의 이름을 템플릿에 데이터 요소로 전달하지 않고 액세스 할 수 있습니까?현재 템플릿 이름을 가져 옵니까?
감사합니다. 나는이를 바라고 있어요
는
func (t *Template) Name() string
이 (http://golang.org/pkg/text/template/#Template.Name에서) 무엇을 의미하는지는 "이름은 템플릿의 이름을 반환합니다."
에서 템플릿 이름에 액세스하려는 경우 템플릿을 내에 넣으려는 경우 template.FuncMap에 함수를 추가하거나 데이터 요소로 이름을 추가 할 것을 제안 할 때만 생각할 수 있습니다.
아마 같을 것이다 첫 번째 :
var t = template.Must(template.New("page.html").ParseFiles("page.html"))
t.Funcs(template.FuncMap{"name": fmt.Sprint(t.Name())})
그러나 나는 그것이 내가 그것에 대해 엉망으로 한 빠른 시간에 동작하지 않습니다. 잘하면 올바른 방향으로 안내 할 수 있기를 바랍니다.
데이터 요소로 이름을 추가하는 것이 장기적으로 더 쉬울 수도 있습니다.
편집 :
전체 실행 예 : 경우 사람은 기본적으로 템플릿을 만든 후 FuncMap에 추가 한 후, 함수를 정의의 문제, 그것은 template.FuncMap를 사용하는 방법을 알고 싶어 :
func main() {
const text = "{{.Thingtype}} {{templname}}\n"
type Thing struct {
Thingtype string
}
var thinglist = []*Thing{
&Thing{"Old"},
&Thing{"New"},
&Thing{"Red"},
&Thing{"Blue"},
}
t := template.New("things")
templateName := func() string { return t.Name() }
template.Must(t.Funcs(template.FuncMap{"templname": templateName}).Parse(text))
for _, p := range thinglist {
err := t.Execute(os.Stdout, p)
if err != nil {
fmt.Println("executing template:", err)
}
}
}
출력 :
Old things
New things
Red things
Blue things
놀이터 링크 : http://play.golang.org/p/VAg5Gv5hCg
감사합니다. 네, 그것이 제가 의미했던 것입니다. 그리고 네, 그 문서에서 Name() func을 보았습니다.하지만 FuncMaps를 사용하지 않고 액세스 할 수 있는지 궁금합니다. 나는 그것을 데이터 요소로 전달할 것이다. 다시 한번 감사한다. – rebnoob
안녕하세요, FuncMap 사용법에 대한 전체 예제를 통해 답변을 업데이트했습니다. 나는 당신의 질문에 흥미를 느끼고 _really_ 그것을 해결하려고했습니다 :-) – Intermernet
쿨, 고마워요! – rebnoob