Transmission de données entre modèles
Dans le système de modèles de Go, il peut être nécessaire de transmettre des données entre plusieurs modèles, en particulier lorsqu'il s'agit d'inclure un modèle dans un autre. La question se pose : « Comment puis-je transmettre des données en tant qu'arguments à un modèle inclus et y accéder dans ce modèle ? »
Pour y parvenir, vous pouvez utiliser une fonction personnalisée qui fusionne les arguments en une seule valeur de tranche. En enregistrant cette fonction, elle peut être utilisée dans l'invocation du modèle. Le code suivant montre comment procéder :
<code class="go">package main import ( "fmt" "html/template" ) func main() { t, err := template.New("t").Funcs(template.FuncMap{ "args": func(vs ...interface{}) []interface{} { return vs }, }).Parse("{{ template \"image_row\" args . 5 }}") if err != nil { fmt.Println(err) return } err = t.Execute(template.Must(template.ParseFiles("index.html", "image_row.html")), nil) if err != nil { fmt.Println(err) return } } // index.html {{ template "image_row" . | 5 }} // image_row.html {{ define "image_row" }} To stuff here {{index . 0}} {{index . 1}} {{ end }}</code>
Dans le modèle image_row, les arguments sont accessibles à l'aide de la fonction d'index intégrée. Par exemple, {{index . 0}} accéderait au premier argument (index 0) transmis par le modèle index.html, dans ce cas le numéro 5.
Cette solution offre un moyen polyvalent de transmettre et d'accéder aux données entre plusieurs modèles, permettant des fonctionnalité et réutilisation efficace du code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!