2014-07-03 30 views
8

Golang'ın html şablonları ile biraz uğraşırken, şablonlardaki nesnelerin üzerine döngü yapmak için bulduğum tüm örnekler, şablondaki yapılara geçiş yapıyordu. örnek: "ana" şablon varlık ileGit şablonları: dilim yapısının yerine yapıların dilimi boyunca aralık aralığı

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) 
} 

:

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

Bu çalışır, ancak ben hemen yanında karşılık gelen Adına i eğer her Id gösterilecek nasıl zannettim alamadım Sadece .Name özelliği üzerinde değişiyor. Her kullanıcıyı, görüntülerken özelliklerini gruplandırmak için bir nesne olarak ele almak daha mantıklı bulurdum.

Böylece benim sorum: Artık

i şablona yapılar bir dilim geçmek istiyorsa ne olacak? Bu çalışmayı yapmak için sözdizimi ne olurdu? Resmi html/template belgesinde nasıl bulunmadığını ya da anlayamadım. Böyle uzaktan bakarak bir şeyi tahmin: (sadece anlaşılmış almak var, kasten yanlış burada sözdizimi)

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

Teşekkür:

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

ve bunun gibi biraz görünümlü bir şablon.

+1

bunu okuyun bakın: http://jan.newmarch.name/go/template/chapter-template.html - özellikle sen menzil döngü içinden çağırabilirsiniz bir değişkene birini atayın. – elithrar

+0

Konuyla ilgili tam olarak görünüyor gibi görünüyor, çok yakında hepsini okuyacağından emin olacağım. Teşekkürler. –

+0

Gerçekten de, daha sonra içine gireceğimi tahmin ettiğim problemlerin cevabı bile vardı. Bu harika bağlantı için teşekkürler. –

cevap

İlgili konular