使用映射中的值作为胡子模板映射中另一个值的键

时间:2014-02-06 15:00:18

标签: java mustache handlebars.js

我正在使用Handlebars的jknack Java端口。我需要创建一个A-Z列表。地图的关键是字母表。目前,我在胡子模板中有26个:

{{#if A}}<li><a href="#a">A</a></li>{{else}}<li class="unused-letter">A</li>{{/if}}

例如,我可以在关键字“keys”下为模型添加一个字母数组,并循环显示结果:

{{#keys}}
   {{#if .}}<li><a href="#a">{{.}}</a></li>{{else}}<li class="unused-letter">{{.}}</li>{{/if}}
{{/keys}}

但是,这不会检查地图是否具有与期间值匹配的密钥。

有没有办法使用从地图获得的值作为地图中另一个对象的关键字?

更新信息

看着Mark的条目我可以看到我正在从错误的方向接近问题。如果一封信没有结果,我的模型在Map中没有条目。但是,如果我更新我的模型以便键(字母)有一个空列表而不是没有键/条目那么我可以只使用地图上的键而不是尝试使用另一个条目来提供可能代表所有的值可能的钥匙。

1 个答案:

答案 0 :(得分:1)

我不确定你的索引数据格式是什么样的,所以想象一下这个格式的索引是JSON:

{
   "items":[
      {
         "A":[]
      },
      {
         "B":[
            "dummy",
            "dummy",
            "dummy"
         ]
      },
      {
         "C":[]
      },
      {
         "D":[
            "dummy",
            "dummy",
            "dummy"
         ]
      },
      {
         "E":[]
      },
      {
         "F":[
            "dummy",
            "dummy",
            "dummy"
         ]
      }
   ]
}

现在要迭代显示已使用/未使用的索引,需要一个模板,如:

<ul>
{{#items}}
{{#each .}}
{{#if .}}
  <li><a href="#{{@key}}">{{@key}}</a></li>
{{else}}
  <li class="unused-letter">{{@key}}</li>
{{/if}}
{{/each}}
{{/items}}
</ul>

对于上面的示例数据将导致:

<ul>
  <li class="unused-letter">A</li>
  <li><a href="#B">B</a></li>
  <li class="unused-letter">C</li>
  <li><a href="#D">D</a></li>
  <li class="unused-letter">E</li>
  <li><a href="#F">F</a></li>
</ul>