github.com/EngineerKamesh/gofullstack@v0.0.0-20180609171605-d41341d7d4ee/volume3/section1/intermediate/cars/cars.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "encoding/gob" 6 "html/template" 7 8 "github.com/EngineerKamesh/gofullstack/volume3/section1/intermediate/model" 9 "honnef.co/go/js/dom" 10 "honnef.co/go/js/xhr" 11 ) 12 13 const CarItemTemplate = ` 14 <td class="mdl-data-table__cell--non-numeric">{{.ModelName}}</td> 15 <td class="mdl-data-table__cell--non-numeric">{{.Color}}</td> 16 <td class="mdl-data-table__cell--non-numeric">{{.Manufacturer}}</td> 17 ` 18 19 var D = dom.GetWindow().Document() 20 21 func main() { 22 23 nano := model.Car{ModelName: "Nano", Color: "Yellow", Manufacturer: "Tata"} 24 ambassador := model.Car{ModelName: "Ambassador", Color: "White", Manufacturer: "HM"} 25 omni := model.Car{ModelName: "Omni", Color: "Red", Manufacturer: "Maruti Suzuki"} 26 cars := []model.Car{nano, ambassador, omni} 27 28 println("Cars Template Example") 29 30 autoTableBody := D.GetElementByID("autoTableBody") 31 for i := 0; i < len(cars); i++ { 32 trElement := D.CreateElement("tr") 33 tpl := template.New("template") 34 tpl.Parse(CarItemTemplate) 35 var buff bytes.Buffer 36 tpl.Execute(&buff, cars[i]) 37 trElement.SetInnerHTML(buff.String()) 38 autoTableBody.AppendChild(trElement) 39 } 40 41 var carsDataBuffer bytes.Buffer 42 enc := gob.NewEncoder(&carsDataBuffer) 43 enc.Encode(cars) 44 45 xhrResponse, err := xhr.Send("POST", "/cars-data", carsDataBuffer.Bytes()) 46 47 if err != nil { 48 println(err) 49 } 50 51 println("xhrResponse: ", string(xhrResponse)) 52 53 }