在更复杂的场景中,出于多种原因需要视图模型。它以更适合显示或在本例中为模板处理的方式表示模型的数据。
如果您使用的是视图模型,您可以轻松地以有助于实现目标的方式表示列表。
模型:
{
name: "Richard",
numbers: [1, 2, 3]
}
查看型号:
{
name: "Richard",
numbers: [
{ first: true, last: false, value: 1 },
{ first: false, last: false, value: 2 },
{ first: false, last: true, value: 3 }
]
}
第二个列表表示很难键入,但从代码创建却非常简单。在将您的模型映射到视图模型时,只需将您需要的每个列表first
和last
for 替换为此表示。
function annotatedList(values) {
let result = []
for (let index = 0; index < values.length; ++index) {
result.push({
first: index == 0,
last: index == values.length - 1,
value: values[index]
})
}
return result
}
在无限列表的情况下,您也只能设置first
和省略last
,因为其中之一足以避免尾随逗号。
使用first
:
{{#numbers}}{{^first}}, {{/first}}{{value}}{{/numbers}}
使用last
:
{{#numbers}}{{value}}{{^last}}, {{/last}}{{/numbers}}