2015-08-22 10 views
0

Я пытаюсь сделать структуру объекта в Dust 2.7.2, такие какLooping вопрос при визуализации иерархии объектов с использованием Dust.JS 2.7.2 для Ul/li теги

{ 
    name:"Home Page", 
    url: "/", 
    "sub-page1": { 
     name: "Sub Page 1", 
     url: "/sub-page1", 
     "sub-sub-page1": { 
      "name": "Sub Sub Page1", 
      "url": "/sub-page1/sub-sub-page1" 
     } 
    } 
} 

к чему-то вроде

<ul><li><a href="/">Home Page</a><ul><li><a href="/subpage1">Sub Page 1</a> ...

с рекурсивным частичным, но я не могу петлю через переменно именованные объекты, не вызывая бесконечный цикл. Моя текущая попытка выглядит следующим образом, с частичным называющими себя:

<li> 
 
    <a href="{url}">{name}</a>{#.}<ul>{>"components/menu/recurlist"/}</ul>{/.} 
 
</li>

+0

я потерплю более полное решение, когда я получаю к компьютеру, но '{#.}' Всегда будет оценивать его содержимое. Пыль не сможет справиться с этим рекурсивно, потому что ваши ключи подстраницы имеют разные имена. Структура каждого уровня должна выглядеть одинаково. – Interrobang

+0

Хорошо, спасибо, что было бы очень полезно! Да, это сделано так, чтобы дерево можно было быстро пройти JS, используя имена ключей для разрешения URL. Я хочу инвертировать это, чтобы отобразить меню, используя Пыль. Я написал рекурсивную функцию JS в прошлом, чтобы сделать это, но теперь хочу использовать собственную пыль, поскольку это более гибкое форматирование. – Ampakinetic

ответ

0

Там нет никакого способа для пыли угадать имя вашего вложенного объекта контекста, когда он меняется каждый раз. Вам действительно нужно, чтобы структура вложенности была одинаковой на всех уровнях. Если вам абсолютно необходимо, вы можете написать специальные помощники, чтобы обойти это, но это выходит за рамки этого вопроса.

После того как вы нормированные данные, ваш шаблон становится простым:

<ul> 
    <li><a href="{url}">{name}</a> 
    {#subpage}{>"components/menu/recurlist"/}{/subpage} 
    </li> 
</ul> 
+0

Спасибо, что заглянули в него дальше. Я работал над этим, когда JS-код перерабатывал данные перед рендерингом. – Ampakinetic