Я пытаюсь отобразить сильно изменяющийся набор данных, используя серию вложенных шаблонов Handlebars, и результат, который получается, полностью лишен HTML-тегов, несмотря на использование 'triple-stash' и возвращение SafeString.
У меня есть данные, которые выглядят примерно так:
{
"type": "person",
"details": [
{"name": "firstname", "value": "joe"},
{"name": "lastname", "value": "smith"},
{
"name": "company",
"value": "acme",
"details": [
{"name": "address", "value": "123 Main St; Somewhere, CA"},
{"name": "employees", "value": "10+"}
]
}
]
}
и у меня есть пара таких шаблонов:
<template id="personDetails">
<ul>
{{{renderPersonDetails details}}}
</ul>
</template>
<template id="companyDetails">
<ol>
{{{renderCompanyDetails details}}}
</ol>
</template>
Я передаю весь объект в первый шаблон. В шаблоне я передаю коллекцию 'details' зарегистрированному помощнику: "renderPersonDetails". Первые два элемента просты и возвращаются как два элемента LI. Они возвращаются нормально.
Когда мы переходим к третьему элементу, имеющему свойство "details", я передаю этот объект шаблону companyDetails, который, в свою очередь, передает коллекцию "details" помощнику renderCompanyDetails.
Результаты работы помощника renderCompanyDetails полностью лишены HTML, несмотря на то, что:
1. мы используем тройное хранилище
2. мы возвращаем содержимое в объекте Handlebars.SafeString
3. Если я выведу html в консоль перед возвратом, я увижу HTML, как и ожидалось
Очевидно, что этот пример может быть значительно упрощен. Однако наш случай использования требует такого типа обработки из-за характера данных и требований к рендерингу.
Кстати, помощник renderCompanyDetails конструирует HTML в помощнике. Если я попытаюсь передать данные из помощника в третий шаблон и вернуть ТО, HTML будет полностью удален еще до рендеринга...