我有一个示例对象,我试图用它制作一个导航栏,每个对象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 属性应用类名的任何帮助。