Я использую шаблоны jquery для создания древовидной структуры для отображения дерева разделов и элементов.
Структура данных выглядит так: каждый раздел имеет элементы и разделы, и каждый элемент может иметь больше разделов:
section
items
item
sections
item
sections
sections
section
sections
items
...and so on
Мои шаблоны затем рекурсивно называют друг друга:
<script id="my-item-tmpl" type="text/x-jquery-tmpl">
<li>
<span>${text}</span>
<ul>
{{each sections}}
{{tmpl($value) "sectionTmpl"}}
{{/each}}
</ul>
</li>
</script>
<script id="my-section-tmpl" type="text/x-jquery-tmpl">
<li>
<span>${text}</span>
<ul>
{{each items}}
{{tmpl($value) "itemTmpl"}}
{{/each}}
{{each sections}}
{{tmpl($value) "sectionTmpl"}}
{{/each}}
</ul>
</li>
</script>
$("#my-item-tmpl").template('itemTmpl');
$("#my-section-tmpl").template('sectionTmpl');
$.tmpl('sectionTmpl', { section }).appendTo(this);
Я нахожу, однако, что около 4 уровней в структуре я получаю ошибку "too much recursion
"в моей консоли.
Это просто ограничение механизма шаблона jQuery?
Edit:
Я решил это, удалив {{each}}
и заменив его на вызов {{tmpl}}
. {{each}}
не нужен. Я также завернул каждый вызов {{tmpl}}
в {{if}}
, чтобы убедиться, что коллекция существует.