2012-12-31 6 views
7

utilizzando HTML/templates in Go si può fare quanto segue:Visualizzare un conteggio sulla modello HTML in Go

<table class="table table-striped table-hover" id="todolist"> 
    {{$i:=1}} 
    {{range .}}   
    <tr> 
     <td><a href="id/{{.Id}}">{{$i}}</a></td> 
     <td>{{.Title}}</td> 
     <td>{{.Description}}</td> 
     </tr> 
     {{$i++}} 

    {{end}} 
</table> 

ogni volta aggiungo la variabile $ i l'applicazione si blocca.

+0

' "text/template"' (quindi anche ' "html/template"') non implementa alcun calcolo. Devi implementare la tua funzione Go che chiami dal modello. Nella maggior parte dei casi, l'indice restituito dall'azione 'range' è sufficiente. – snap

risposta

12

Nel mio html template:

<table class="table table-striped table-hover" id="todolist"> 
     {{range $index, $results := .}}   
     <tr> 
      <td>{{add $index 1}}</td> 
      <td>{{.Title}}</td> 
      <td>{{.Description}}</td> 
      </tr> 
     {{end}} 
    </table> 

Nel codice go ho scritto una funzione che ho passato al FuncMap:

func add(x, y int) int { 
    return x + y 
} 

Nel mio gestore:

type ToDo struct { 
    Id   int 
    Title  string 
    Description string 
} 

func IndexHandler(writer http.ResponseWriter, request *http.Request) { 
    results := []ToDo{ToDo{5323, "foo", "bar"}, ToDo{632, "foo", "bar"}} 
    funcs := template.FuncMap{"add": add} 
    temp := template.Must(template.New("index.html").Funcs(funcs).ParseFiles(templateDir + "/index.html")) 
    temp.Execute(writer, results) 
} 
9

controllare la sezione Variables di text/template

http://golang.org/pkg/text/template/

range $index, $element := pipeline 
+0

Sto usando html/template not text/template – jwesonga

+5

'html/template' semplicemente sfugge i valori prima di passarli a' text/template'. Se osservate i documenti per 'html/template', noterete che si riferiscono semplicemente ai documenti per' text/template'. – dskinner

Problemi correlati