Я использую шаблоны 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?
Редактировать:
Я решил эту проблему, удалив {{each}}
и заменивэто с вызовом {{tmpl}}
. {{each}}
не был необходим. Я также завернул каждый вызов {{tmpl}}
в {{if}}
, чтобы убедиться, что коллекция существует.