шаблон подчеркивания с динамическим DTO - PullRequest
0 голосов
/ 02 января 2019

Я ищу шаблон, в котором я могу создавать различные шаблоны на основе модели. Представьте, что у меня есть функция ниже 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?

1 Ответ

0 голосов
/ 02 января 2019

Марионетка имеет метод 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
  }
}

Следовательно, ваш шаблон остается без изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...