Heim  >  Artikel  >  Backend-Entwicklung  >  Wie greife ich in Go-Vorlagen auf die übergeordnete/globale Pipeline innerhalb eines Bereichs zu?

Wie greife ich in Go-Vorlagen auf die übergeordnete/globale Pipeline innerhalb eines Bereichs zu?

Susan Sarandon
Susan SarandonOriginal
2024-11-12 08:18:02666Durchsuche

How to Access Parent/Global Pipeline within a Range in Go Templates?

Zugriff auf übergeordnete/globale Pipeline innerhalb des Bereichs in Go-Vorlagen

Problem

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.

Arbeitsbeispiel

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"}})
}

Lösungen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn