带有动态 DTO 的下划线模板

underscore template with dynamic DTO

我正在寻找一种可以根据模型创建各种模板的模式。假设我有以下 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
  }
}

因此您的模板不受影响。