backbone.js 带有动态DTO下划线模板

bqjvbblv  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(159)

我正在寻找一个模式,我可以创建各种模板的基础上,一个模型。想象一下,我有下面的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中的更改?

k3bvogb1

k3bvogb11#

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
  }
}

因此模板不会受到影响。

相关问题