2014-07-03 19 views
8

Po zagraniu z szablonami html golanga, wszystkie przykłady, które znalazłem dla pętli nad obiektami w szablonach, przekazywały struktury plasterków do szablonu, trochę jak w tym Przykład:Gotowe szablony: zakres nad wycinkiem struktur zamiast struktury plasterków

type UserList struct { 
    Id []int 
    Name []string 
} 

var templates = template.Must(template.ParseFiles("main.html")) 

func rootHandler(w http.ResponseWriter, r *http.Request) { 
    users := UserList{ 
     Id: []int{0, 1, 2, 3, 4, 5, 6, 7}, 
     Name: []string{"user0", "user1", "user2", "user3", "user4"}, 
    } 
    templates.ExecuteTemplate(w, "main", &users) 
} 

z „głównej” szablon samopoczucia:

{{define "main"}} 
    {{range .Name}} 
     {{.}} 
    {{end}} 
{{end}} 

To działa, ale ja nie rozumiem jak mam do wyświetlania każdego identyfikatora tuż obok odpowiadającej jej imię, gdy "M zakres tylko od właściwości .Name. Byłbym bardziej logiczny traktować każdego użytkownika jako obiekt do grupowania jego właściwości podczas wyświetlania.

Stąd moje pytanie:

A co gdybym chciał przejść kawałek elemencie do szablonu? Jaka byłaby składnia, aby to działało? Nie znalazłem lub nie rozumiałem, jak to zrobić w oficjalnym dokumencie html/template. wyobrażałem sobie czegoś szuka zdalnie tak:

type User struct { 
    Id int 
    Name string 
} 
type UserList []User 
var myuserlist UserList = ... 

i szablon patrząc nieco jak poniżej: (składnia jest tu celowo źle, to tylko po to żeby rozumieć)

{{define "main"}} 
    {{for each User from myuserlist as myuser}} 
     {{myuser.Id}} 
     {{myuser.Name}} 
    {{end}} 
{{end}} 

Dzięki.

+1

Przeczytaj to: http://jan.newmarch.name/go/template/chapter-template.html - konkretnie przypisać jeden do zmiennej, które można nazwać od wewnątrz pętli zasięgu. – elithrar

+0

To wydaje się być kompletne na ten temat, na pewno przeczytam to wszystko już wkrótce. Dzięki. –

+0

Rzeczywiście, miał nawet odpowiedź na problemy, o których domyślałem się później. Dzięki za ten świetny link. –

Odpowiedz