Maison >développement back-end >Golang >Comment transmettre des données d'un modèle parent à un modèle enfant dans les modèles Go ?

Comment transmettre des données d'un modèle parent à un modèle enfant dans les modèles Go ?

DDD
DDDoriginal
2024-10-26 03:08:27250parcourir

How can you pass data from a parent template to a child template in Go templates?

Transmission de données entre modèles

Votre requête concerne la transmission de données d'un modèle à un autre. Vous disposez d'un modèle parent (index.html) comprenant un modèle enfant (image_row.html) mais souhaitez transmettre des données supplémentaires à l'enfant.

Le comportement par défaut des modèles autorise uniquement les données définies dans le modèle parent. à transmettre à l'enfant. Cependant, vous pouvez atteindre votre objectif en employant certaines techniques :

Utiliser une fonction pour plusieurs arguments

Une approche consiste à définir une fonction qui regroupe vos arguments en un seul valeur de tranche. Vous pouvez ensuite enregistrer cette fonction et l'invoquer dans le modèle.

Par exemple :

import "text/template"

func args(vs ...interface{}) []interface{} { return vs }

t, err := template.New("t").Funcs(template.FuncMap{"args": args}).Parse(...)

Dans index.html :

{{ template "image_row" args . 5 }}

Dans image_row.html :

{{ define "image_row" }}
   Data: {{ index . 0 }} {{ index . 1 }}
{{ end }}

Cela vous permet d'accéder à vos arguments dans le modèle enfant à l'aide de la fonction index :

{{ index . 0 }} -> .
{{ index . 1 }} -> 5

Autres approches

Alternativement, vous pourriez envisager :

  • Utiliser une fonction de modèle personnalisée : Définir une fonction personnalisée dans le modèle parent qui génère les données nécessaires pour l'enfant.
  • Passer une structure ou une carte : Construisez une structure ou une carte pour agréger les données et les transmettre au modèle enfant.

La personnalisation du mécanisme de transmission des données de cette manière vous offre flexibilité et contrôle sur comment les données sont partagées entre les modèles.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn