2013年6月30日日曜日

Go の template パッケージで map の key を参照する

GAE + Go では HTML を html/template パッケージで出力することが基本になります。
このとき {{}} 構文によって Go 内の変数を HTML 内に展開することができます。

array や map や slice の中身を順次取り出しながら表示する場合は
{{range}}{{end}} 構文を使って書くことができます。
<ul>
  {{range .}}
    <li>{{.Name}}さんこんにちは</li>
  {{end}}
</ul>

ただ中身を表示するだけならこれでよいのですが、
map を使っている場合、どうしても key を埋め込みたい時があるでしょう。
(クリックした要素の key をサーバへ返したいときなど)

この場合は以下のように for each 文っぽく key とvalue を変数に入れることができます。
<ul id="gamelist">
  {{range $key, $val := .}}
    <li class="game" key="{{$key}}">
      <div class="title">{{$val.Name}}</div>
      <div class="description">{{$val.Description}}</div>
      <div class="thumbnail"><img width="200" src="/client/img/living.png"></div>
      <a href="/editor?game_key={{$key}}"><button class="edit">作る</button></a>
      <button class="copy">コピー</button>
      <button class="delete">消す</button>
    </li>
  {{end}}
</ul>

ちなみに $val は無くても同じように動きます。



地味に 100 本目の投稿です。

0 件のコメント:

コメントを投稿