如何迭代 aurelia 模板中的集合
How do I iterate over collection in aurelia templates
我目前正在尝试使用 aurelia 复制以下车把语法
<td><span>{{#each person.colours}}{{name}}{{#unless @last}}, {{/unless}}{{/each}}</span></td>
我知道 html 元素有 repeat.for
属性,但我不想在这种情况下重复任何元素。
所以给定一个具有以下形状的对象:
{
firstName: "John",
lastName: "Doe",
colours: [
{
id: 1,
name: "Red"
},
{
id: 2,
name: "Green"
}
]
}
应该生成以下输出:
<td><span>Red, Green</span></td>
试试这个:
get colours() {
return this.item.colours.map(colour => colour.name).join(', ');
}
<td><span>${colours}</span></td>
这是我的临时解决方案,它的工作原理与 Fabio Luz 暗示的想法相同,因此在视图模型上提供计算结果的方法。
colours(person: IPerson) {
return person.colours.map(colour => colour.name).join(', ');
}
然后在模板中将人物传递给方法:
<td><span>${colours(person)}</span></td>
结果
<td><span>Red, Green</span></td>
如果有人提出允许在模板中完成此操作的答案,如车把,我会将其标记为答案。
<require from="./colour-names-value-converter"></require>
<td><span>${person.colours | colourNames}</span></td>
颜色名称值-converter.js
export class ColourNamesValueConverter {
toView(colours) {
return colour.map(c => c.name).join(', ');
}
}
我目前正在尝试使用 aurelia 复制以下车把语法
<td><span>{{#each person.colours}}{{name}}{{#unless @last}}, {{/unless}}{{/each}}</span></td>
我知道 html 元素有 repeat.for
属性,但我不想在这种情况下重复任何元素。
所以给定一个具有以下形状的对象:
{
firstName: "John",
lastName: "Doe",
colours: [
{
id: 1,
name: "Red"
},
{
id: 2,
name: "Green"
}
]
}
应该生成以下输出:
<td><span>Red, Green</span></td>
试试这个:
get colours() {
return this.item.colours.map(colour => colour.name).join(', ');
}
<td><span>${colours}</span></td>
这是我的临时解决方案,它的工作原理与 Fabio Luz 暗示的想法相同,因此在视图模型上提供计算结果的方法。
colours(person: IPerson) {
return person.colours.map(colour => colour.name).join(', ');
}
然后在模板中将人物传递给方法:
<td><span>${colours(person)}</span></td>
结果
<td><span>Red, Green</span></td>
如果有人提出允许在模板中完成此操作的答案,如车把,我会将其标记为答案。
<require from="./colour-names-value-converter"></require>
<td><span>${person.colours | colourNames}</span></td>
颜色名称值-converter.js
export class ColourNamesValueConverter {
toView(colours) {
return colour.map(c => c.name).join(', ');
}
}