Я ищу шаблон, в котором я могу создавать различные шаблоны на основе модели. Представьте, что у меня ниже функция getDTO.
export const getDTO => [
{ 'title': 'title one', 'body': 'sample paragraph one' },
{ 'title': 'title two', 'body': 'sample paragraph two' },
]
Я использую следующий шаблон подчеркивания для визуализации DTO.
<script type = "text/template">
<h1><%= title %></h1>
<p><%= body %></p>
</script>
Он отлично работает, пока я не сохраню DTO прежним. Если я изменю свой DTO с какой-либо целью, это прервёт рендеринг шаблона.
Теперь вопрос в том, есть ли какой-либо шаблон для того, чтобы шаблон всегда отражал изменения в моем DTO?


У Marionette есть метод serializeData, который действует как слой между шаблоном и моделью данных.
Если вы измените что-либо в модели данных или в шаблоне, вы можете внести соответствующие корректировки в serializeData вместо обновления обоих мест.
Точно так же, если вы не хотите, чтобы изменения в вашей модели данных влияли на шаблон, вы можете создать между ними слой.
Например, если вы измените
export const getDTO => [
{ 'title': 'title one', 'body': 'sample paragraph one' },
{ 'title': 'title two', 'body': 'sample paragraph two' },
]
к
export const getDTO => [
{ 'heading': 'title one', 'body': 'sample paragraph one' },
{ 'heading': 'title two', 'body': 'sample paragraph two' },
]
Вы обновляете свой слой из
serializeData(dto){
return dto;
}
к
serializeData(dto){
return {
title: dto.heading
}
}
следовательно, ваш шаблон останется неизменным.