Bei Verwendung einer Bereichspipeline ({{Range Pipeline}} T1 {{ end}}) im Text-/Vorlagenpaket kann auf den Wert der äußeren Pipeline vor der Bereichsaktion oder als übergeordnete/globale Pipeline zugegriffen werden, die an Execute() übergeben wird.
Im folgenden Beispiel versuchen wir, innerhalb der Bereichspipeline auf .Path zuzugreifen, aber .Path ist nicht verfügbar, da der Punkt über die Dateielemente iteriert.
package main import ( "os" "text/template" ) // .Path won't be accessible, because dot will be changed to the Files element const page = `{{range .Files}}<script src="{{html .Path}}/js/{{html .}}"></script>{{end}}` type scriptFiles struct { Path string Files []string } func main() { t := template.New("page") t = template.Must(t.Parse(page)) t.Execute(os.Stdout, &scriptFiles{"/var/www", []string{"go.js", "lang.js"}}) }
Verwendung der $-Variablen (empfohlen)
Laut Text-/Vorlagendokumentation wird $ zu Beginn der Ausführung auf das an Execute() übergebene Datenargument gesetzt, das den Startwert darstellt von Punkt. Dies bedeutet, dass auf den .Path des äußeren Bereichs über $.Path zugegriffen werden kann.
const page = `{{range .Files}}<script src="{{html $.Path}}/js/{{html .}}"></script>{{end}}`
Verwendung einer benutzerdefinierten Variablen (Legacy-Lösung)
Ein anderer Ansatz ist die Verwendung eine benutzerdefinierte Variable zum Übergeben eines Werts an den Bereichsbereich, wie unten gezeigt:
const page = `{{$p := .Path}}{{range .Files}}<script src="{{html $p}}/js/{{html .}}"></script>{{end}}`
Das obige ist der detaillierte Inhalt vonWie greife ich in Go-Vorlagen auf die übergeordnete/globale Pipeline innerhalb eines Bereichs zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!