Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menulis templat html secara berperingkat dalam go

Bagaimana untuk menulis templat html secara berperingkat dalam go

WBOY
WBOYke hadapan
2024-02-06 09:50:08681semak imbas

Bagaimana untuk menulis templat html secara berperingkat dalam go

Kandungan soalan

Saya sedang membina pelayar data berasaskan web yang dipanggil mavgo flight. Saya mahu jadual besar dalam sqlite dicetak secara berterusan dan bukannya kelakuan lalai hanya mencetak apabila semua data tersedia. Saya cuba menjalankan templat setiap baris data tetapi gagal.

func renderHTMLTable(w http.ResponseWriter, result *sqlx.Rows) {
    cols, err := result.Columns()
    if err != nil {
        log.Println(err, "renderHTMLTable")
        return
    }
    tmpl, err := template.ParseFiles("./templates/2d.html")
    if err != nil {
        log.Println("template failed", err)
        return
    }
    data := HTMLTable{}
    data.Cols = cols
    for result.Next() {
        cols, err := result.SliceScan()
        if err != nil {
            log.Println(w, err)
            break
        }
        s := make([]string, len(cols))
        for i, v := range cols {
            s[i] = fmt.Sprint(v)
        }
        tmpl.Execute(w, s)
    }
}

Jawapan betul


Saya berputus asa untuk menjadi pandai dan melakukan apa yang dicadangkan oleh cerise Fungsi untuk menulis baris secara berperingkat:

func renderHTMLTable(w http.ResponseWriter, result *sqlx.Rows) {
cols, err := result.Columns()
if err != nil {
    log.Println(err, "renderHTMLTable")
    return
}
head, err := template.ParseFiles("./templates/head.html")
if err != nil {
    log.Println("template failed", err)
    return
}
row, err := template.ParseFiles("./templates/row.html")
if err != nil {
    log.Println("template failed", err)
    return
}
foot := `  </tbody>
</table>
</div>

</body>
</html>`
head.Execute(w, cols)
s := make([]string, len(cols))
for result.Next() {
    values, err := result.SliceScan()
    if err != nil {
        log.Println(w, err)
        break
    }

    for i, v := range values {
        s[i] = fmt.Sprint(v)
    }
    row.Execute(w, s)
}
fmt.Fprint(w, foot)

}

Atas ialah kandungan terperinci Bagaimana untuk menulis templat html secara berperingkat dalam go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam