Dust.js 上下文问题?

Dust.js context issue?

我有以下部分:

<ul class="navbar">
    {#nav_links}
    <li class="navbar__link {?sub_menu}more{/sub_menu}">
        <a href="/{link}">{label}</a>
        {?sub_menu}
        <ul class="navbar__link--sub">
            {#sub_menu}
            <li class="navbar__link--sub {?sub_menu}more{/sub_menu}">
                <a href="/{link}">{label}</a>
            </li>
            {/sub_menu}
        </ul>
        {/sub_menu}
    </li>
    {/nav_links}
</ul>

与JSON:

{
    title: "page title",
    nav_links: [
        {
            link: "home",
            label:"Home"
        },
        {
            link: "products",
            label:"Products",
            sub_menu: [
                {link: "link1", label: "Product A"},
                {link: "link2", label: "Product B"},
                {link: "link3", label: "Products C", sub_menu: [
                    {link: "link3-1", label: "Sub Product A"},
                    {link: "link3-2", label: "Sub Product B"}
                ]},
            ]
        }
    ]
}

我 运行 遇到的问题是嵌套的 sub_menu 属性,所有子菜单项都会添加 more class,无论它们是否有嵌套 sub_menu 与否。我认为上下文会像 linklabel 那样发生变化,但它似乎仍然像第一个条件和部分标签那样引用初始 sub_menu。我已经在 JSON 和部分标记中重命名了嵌套的 sub_menu 属性 ,然后上下文可以正常工作。有没有办法仍然使用 sub_menu 属性 名称?或者引用 child 属性 例如 sub_menu.sub_menu?

默认情况下,如果在特定级别找不到键,Dust 将沿着上下文向上移动。但是,您只想明确检查上下文的当前级别。要在 Dust 中执行此操作,请在键前加上一个点:

<li class="navbar__link--sub {?.sub_menu}more{/sub_menu}">