为了账号安全,请及时绑定邮箱和手机立即绑定

在我的模板中访问我的结构数组

在我的模板中访问我的结构数组

Go
慕婉清6462132 2022-03-07 22:55:00
我将一个结构数组传递给我的模板,数据在那里,但我找不到访问特定数据的方法,我已经尝试了很多东西,这里是我的结构type Data struct {  Destination string  IData interface{}}然后在我的控制器中我有users := []models.User {}userRow := models.User{Name: "jon", Email: "jon@mail.com"}users = append(users, userRow)users2 := usersdata := models.Data{    Destination: "content",    IData: users,}data2 := models.Data{    Destination: "content",    IData: users2,}dataFinal := []models.Data{}dataFinal = append(dataFinal, data)dataFinal = append(dataFinal, data2)这是我的模板,虽然这似乎不起作用,但它确实显示了原始数据,但似乎无法具体访问名称。{{define "content"}}<h2>THIS IS THE BODY CONTENT</h2><ul>    {{.}}    {{range .}}    <li>{{.}}</li>    {{end}}</ul>{{end}}编辑:项目:https ://github.com/og2/go-og2-mvc你可能想跑:去获取 github.com/go-sql-driver/mysql去获取 github.com/julienschmidt/httprouter让它工作,应该没问题!
查看完整描述

1 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

如果您传递给"content"模板执行的管道值为dataFinal,那么您必须使用两个{{range}}操作,因为dataFinal它本身是一个切片(类型为[]models.Data),Data.IData也是一个切片(类型为[]model.User)。


在内部{{range}}你可以参考User.Name类似.Name:


<li>{{.Name}}</li>

请参阅此工作示例:


const templ = `{{define "content"}}

<h2>THIS IS THE BODY CONTENT</h2>


<ul>

    {{.}}

    {{range .}}

    <ul>

       {{range .IData}}

       <li>{{.Name}}</li>

       {{end}}

    </ul>

    {{end}}

</ul>

{{end}}`


// Parsing and executing the template:

t := template.Must(template.New("").Parse(templ))

fmt.Println(t.ExecuteTemplate(os.Stdout, "content", dataFinal))

输出(在Go Playground上试试):


<h2>THIS IS THE BODY CONTENT</h2>


<ul>

    [{content [{jon jon@mail.com}]} {content [{jon jon@mail.com}]}]


    <ul>


       <li>jon</li>


    </ul>


    <ul>


       <li>jon</li>


    </ul>


</ul>

<nil>


查看完整回答
反对 回复 2022-03-07
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信