テンプレートに構造体の配列を渡していますが、そのデータはありますが、特定のデータにアクセスする方法が見つからないため、多くのことを試しました。ここでは私のテンプレートの構造体の配列にアクセスする
私のStruct
type Data struct {
Destination string
IData interface{}
}
その後、私のコントローラで私は
users := []models.User {}
userRow := models.User{Name: "jon", Email: "[email protected]"}
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のを取りに行くgithub.com/go-sql-driver/mysql
を取りに行きます。 com/julienschmidt/httprouter
o仕事とうまくいくはずです!
ニース。テンプレートエンジンがアサーションやリフレクションに十分スマートであるかどうか分かりませんでした。提供されたIDataは、インタフェース{}だけではなく、スライスです。 – Uvelichitel
@Uvelichitelテンプレートエンジンはリフレクションを使用します。 'Execute()'と 'ExecuteTemplate()'は 'interface {}'としてデータを受け取ります。そうでない場合、渡されたスライスの範囲を越えることはできません( ' {} '値)。 – icza
@iczaうまくいくようですが、ExecuteTemplateでは1つのデータしか渡すことができないので、より多くの構造体を配列に追加すると、ちょっと混乱してしまいました。したがって、私がやっていることは構造体の配列を渡すことです別の構造体またはオブジェクトを呼び出す場合は、3つの範囲が必要ですか?説明するのは難しいですが、上記の更新を加え、私のプロジェクトを追加して、より広い視野を持つことができます。 – Martin