ナビゲーションバーを作成しようとしているサンプルオブジェクトがあり、それぞれli
に次のようなカスタムクラス名があります:
<ul>
<li class="mainLink1">
<a href="m1/home.html">home</a>
<ul class="subParent1">
<li class="sublink1"><a href="s1/home.html">s1/home</a></li>
<li class="sublink2"><a href="s2/home.html">s2/home</a></li>
</ul>
</li>
<li class="mainLink2">
<a href="m2/service.html">service</a>
<ul class="subParent2">
<li class="sublink1"><a href="s1/service.html">s1/service</a></li>
<li class="sublink2"><a href="s2/service.html">s2/service</a></li>
</ul>
</li>
</ul>
これらのクラス名はすべてヘルパー関数で生成する必要があることはわかっていますが、適切な結果が得られず、混乱しています。これが私の試みです。
テンプレートを使用した私のhtml:
<div id="navigate"></div>
<script type="text/handlebars-x-template" id="menu">
<ul>
{{#list}}
<li><a href="{{link}}">{{name}}</a></li>
{{#if list.sub}}
<ul>
{{#each this}}
<li><a href="{{link}}">{{name}}</a></li>
{{/each}}
</ul>
{{/if}}
{{/list}}
</ul>
</script>
私のヘルパー関数と実装:
var obj = [{"name":"home","link":"m1/home.html","sub":[{"sname":"s1/home","slink":"s1/home.html"},{"sname":"s/home","slink2":"s2/home.html"}]},{"name":"service","link":"m2/service.html","sub":[{"sname":"s1/service","slink":"s1/service.html"},{"sname":"s/service","slink2":"s2/service.html"}]}]
Handlebars.registerHelper("list", function(context, option){
console.log(context, option);
})
var temp = Handlebars.compile($("#menu").html());
var html = $("#navigate").html(temp(obj));
私の試みが非常に悪いことに同意します。それを修正し、 @index プロパティを使用してクラス名を適用するためのヘルプ。