10

テンプレート内での if ステートメントの使用には、本当に困惑しています。

class = "active"アクティブなタブを検出する基本的なタブ メニューを実行するために、golang テンプレートで作成されたナビゲーション リスト内に配置しようとしています。これが私の試みです:

{{define "header"}}
<!DOCTYPE html>
<html>
    <head>
        <title>Geoprod</title>
        {{template "stylesheet" .}}
    </head>
    <body>
        <nav class="navbar" role="navigation">
          <div class="navbar-header">
            <a{{if eq .Active "accueil"}} class="active"{{end}} href="/">Geoprod</a>
          </div>
          <div class="navbar-body">
            <ul class="navbar-list">
                <li{{if eq .Active "societe"}} class="active"{{end}}><a href="/societe">Soci&eacutet&eacute</a></li>
                <li{{if eq .Active "dossier"}} class="active"{{end}}><a href="/dossier">Dossier</a></li>
                <li{{if eq .Active "temps"}} class="active"{{end}}><a href="/temps">Temps</a></li>
                <li{{if eq .Active "mails"}} class="active"{{end}}><a href="/mails">Mails</a></li>
            </ul>
          </div>
        </nav>
{{end}}

そして main.go で:

var FuncMap = template.FuncMap{
    "eq": func(a, b interface{}) bool {
        return a == b
    },
}
var templates = template.Must(template.ParseGlob("templates/*.html"))

と func main() で

templates.Funcs(FuncMap)

プログラムはコンパイルされますが、{{if eq .Active "something"}} class="active"{{end}}(^^ ここに含めました) を追加すると、プログラムにテキストが表示されなくなることがわかりました。理由はありますか?

4

1 に答える 1

5

あなたのコードを最小限の作業例に変換しようとしましたが、あなたのコードとテンプレートは期待どおりに機能すると思います。Go Playgroundで私のコードを表示 (および実行) できます。

{{define ...}}何が間違っていたのかについての私の推測:は、将来使用するためのテンプレートを定義するだけであることに気付きましたか? このテンプレートを実際に使用するよう Go に指示する必要があり{{ template "header" }}ますtemplates.ExecuteTemplate

于 2015-05-11T16:57:13.753 に答える