より複雑なシナリオでは、多くの理由からビューモデルが望ましいです。これは、表示、またはこの場合はテンプレート処理により適した方法でモデルのデータを表します。
ビューモデルを使用している場合は、目標を容易にする方法でリストを簡単に表すことができます。
モデル:
{
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 }
]
}
2番目のリスト表現は入力するのが恐ろしいですが、コードから作成するのは非常に簡単です。ビューモデルにモデルをマッピングしながら、ちょうどあなたが必要とするすべてのリストを交換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
、末尾のコンマを回避するにはそのうちの1つで十分なので、です。
使用first
:
{{#numbers}}{{^first}}, {{/first}}{{value}}{{/numbers}}
使用last
:
{{#numbers}}{{value}}{{^last}}, {{/last}}{{/numbers}}