猿问

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

我将一个结构数组传递给我的模板,数据在那里,但我找不到访问特定数据的方法,我已经尝试了很多东西,这里是


我的结构


type Data struct {

  Destination string

  IData interface{}

}

然后在我的控制器中我有


users := []models.User {}


userRow := models.User{Name: "jon", Email: "jon@mail.com"}

users = append(users, userRow)

users2 := users


data := 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


让它工作,应该没问题!


慕婉清6462132
浏览 121回答 1
1回答

慕虎7371278

如果您传递给"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>&nbsp; &nbsp; {{.}}&nbsp; &nbsp; {{range .}}&nbsp; &nbsp; <ul>&nbsp; &nbsp; &nbsp; &nbsp;{{range .IData}}&nbsp; &nbsp; &nbsp; &nbsp;<li>{{.Name}}</li>&nbsp; &nbsp; &nbsp; &nbsp;{{end}}&nbsp; &nbsp; </ul>&nbsp; &nbsp; {{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>&nbsp; &nbsp; [{content [{jon jon@mail.com}]} {content [{jon jon@mail.com}]}]&nbsp; &nbsp; <ul>&nbsp; &nbsp; &nbsp; &nbsp;<li>jon</li>&nbsp; &nbsp; </ul>&nbsp; &nbsp; <ul>&nbsp; &nbsp; &nbsp; &nbsp;<li>jon</li>&nbsp; &nbsp; </ul></ul><nil>
随时随地看视频慕课网APP

相关分类

Go
我要回答