在更复杂的场景中,出于多种原因,需要视图模型。它以更适合显示或在这种情况下适合模板处理的方式表示模型的数据。
如果您使用的是视图模型,则可以通过简化目标的方式轻松表示列表。
模型:
{
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
用这种表示。
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}}