Dust.js上下文问题?

时间:2015-10-16 04:08:11

标签: templates scope dust.js

我有以下部分内容:

<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类,无论它们是否具有嵌套的sub_menu。我认为上下文会像linklabel一样发生变化,但它似乎仍然像第一个条件和部分标记那样引用初始sub_menu。我已经在JSON和部分标记中重命名了嵌套的sub_menu属性,然后上下文正常工作。有没有办法仍然使用sub_menu属性名称?或者引用子属性,例如sub_menu.sub_menu

1 个答案:

答案 0 :(得分:1)

默认情况下,如果Dust在某个级别找不到某个键,它将向上移动。但是,您希望仅显式检查上下文的当前级别。要在Dust中执行此操作,请在键前加一个点:

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