2013-07-15 28 views
5

Tôi có mẫu đang sử dụng gói http/template. Làm cách nào để lặp lại cả khóa và giá trị trong mẫu?Cách lặp qua các khóa và giá trị của bản đồ trong mẫu Go html

Ví dụ mã:

template := ` 
<html> 
    <body> 
    <h1>Test Match</h1> 
     <ul> 
     {{range .}} 
      <li> {{.}} </li> 
     {{end}} 
    </ul> 
</body> 
</html>` 

dataMap["SOMETHING"] = 124 
dataMap["Something else"] = 125 
t, _ := template.Parse(template) 
t.Execute(w,dataMap) 

Làm thế nào để truy cập vào quan trọng trong {{range}} trong mẫu

Trả lời

7

Một điều bạn có thể thử sử dụng range gán hai biến - một cho chìa khóa, một cho giá trị. Mỗi this thay đổi (và docs), các phím được trả lại theo thứ tự sắp xếp nếu có thể. Dưới đây là một ví dụ sử dụng dữ liệu của bạn:

package main 

import (
     "html/template" 
     "os" 
) 

func main() { 
     // Here we basically 'unpack' the map into a key and a value 
     tem := ` 
<html> 
    <body> 
    <h1>Test Match</h1> 
     <ul> 
     {{range $k, $v := . }} 
      <li> {{$k}} : {{$v}} </li> 
     {{end}} 
    </ul> 
</body> 
</html>` 

     // Create the map and add some data 
     dataMap := make(map[string]int) 
     dataMap["something"] = 124 
     dataMap["Something else"] = 125 

     // Create the new template, parse and add the map 
     t := template.New("My Template") 
     t, _ = t.Parse(tem) 
     t.Execute(os.Stdout, dataMap) 
} 

Có nhiều cách tốt hơn khả năng xử lý nó, nhưng điều này đã làm việc trong tôi (rất đơn giản) trường hợp sử dụng :)

Các vấn đề liên quan