Heim >Backend-Entwicklung >Golang >Wie greife ich in der Bereichsaktion von Go-Vorlagen auf die übergeordnete/globale Pipeline zu?

Wie greife ich in der Bereichsaktion von Go-Vorlagen auf die übergeordnete/globale Pipeline zu?

Barbara Streisand
Barbara StreisandOriginal
2024-11-10 18:34:02208Durchsuche

How to Access the Parent/Global Pipeline in Go Templates' Range Action?

Auf übergeordnete/globale Pipeline in der Bereichsaktion von Go-Vorlagen zugreifen

Im Text-/Vorlagenpaket von Go ist die Möglichkeit, auf Pipelines vor a zuzugreifen Bereichsaktion oder die übergeordnete/globale Pipeline ist unerlässlich. Betrachten Sie das folgende Beispiel:

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

In diesem Beispiel ist der Zugriff auf .Path innerhalb der Bereichsaktion nicht möglich, da .dot in das aktuelle Dateielement umgewandelt wird.

Empfohlen Lösung – Verwendung der $-Variable

Laut der Dokumentation des Text-/Vorlagenpakets enthält die $-Variable das übergebene Datenargument Execute, das ist der Anfangswert von .dot. Um also mithilfe von $.Path in der Bereichsaktion auf den Pfad des äußeren Bereichs zuzugreifen, verwenden Sie die folgende Variante:

const page = `{{range .Files}}<script src="{{html $.Path}}/js/{{html .}}"></script>{{end}}`

Alternative Lösung – Benutzerdefinierte Variable

Vorher Für die Bereichsaktion kann eine benutzerdefinierte Variable definiert werden, um einen Wert an den Bereichsbereich zu übergeben. Zum Beispiel:

const page = `{{$p := .Path}}{{range .Files}}<script src="{{html $p}}/js/{{html .}}"></script>{{end}}`

Das obige ist der detaillierte Inhalt vonWie greife ich in der Bereichsaktion von Go-Vorlagen auf die übergeordnete/globale Pipeline 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