2012-12-31 8 views
7

Korzystanie z HTML/szablony Przejdź można wykonać następujące czynności:Wyświetla liczyć na szablonie html Przejdź

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

każdym razem dodam zmiennej $ I awarii aplikacji.

+0

' "text/szablon"' (a więc także ' "html/szablon"') nie realizuje żadnych obliczeń. Musisz zaimplementować własną funkcję Go, którą wywołujesz z szablonu. W większości przypadków indeks zwracany przez akcję 'range' jest wystarczający. – snap

Odpowiedz

12

W moim 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> 

W kodzie odchodzenia napisałem funkcję, która mijałem do FuncMap:

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

W moim obsługi:

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

Zapoznaj się sekcja Variables z text/template

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

range $index, $element := pipeline 
+0

Używam html/template, a nie text/template – jwesonga

+5

'html/template' po prostu ucieka z wartości przed przekazaniem ich do' text/template'. Jeśli spojrzysz na dokumenty "html/template", zauważysz, że po prostu odsyłają cię do dokumentów dla 'text/template'. – dskinner

Powiązane problemy