我正在尝试使用aurelia-ui-virtualization创建使用地图无限滚动的中继器
我查看了文档,但找不到使用Map的示例,仅使用数组 模板:
<template>
<div virtual-repeat.for="[key,valu] of mp">
${key}
</div>
</template>
和班级
export class App{
mp= new Map<any,any>([['one','foo'],['two','bar]])
}
我期望中继器可以工作,但是我得到了:
aurelia-ui-virtualization.js?b7bb:791 Uncaught (in promise) Error: Value is not iterateable for virtual repeat.
at VirtualRepeat.itemsChanged (aurelia-ui-virtualization.js?b7bb:791)
at VirtualRepeat.attached (aurelia-ui-virtualization.js?b7bb:727)
at Controller.attached (aurelia-templating.js?8628:3759)
at View.attached (aurelia-templating.js?8628:1772)
at ViewSlot.attached (aurelia-templating.js?8628:2130)
at View.attached (aurelia-templating.js?8628:1777)
at ViewSlot.attached (aurelia-templating.js?8628:2130)
at View.attached (aurelia-templating.js?8628:1777)
at ViewSlot.attached (aurelia-templating.js?8628:2130)
at eval (aurelia-framework.js?0682:115)
答案 0 :(得分:2)
我在aurelia讨论link时问了同样的问题,@ bigopon告诉我尚不支持。
所以我最终使用了值转换器
export class MapArrayValueConverter {
toView(value) {
if(value){
if(value instanceof Map )
return [...value]
}
}
fromView(value) {
}
}
答案 1 :(得分:0)
根据我的测试,似乎虚拟中继器没有能力直接使用Map。
尝试一下。
<template>
<div virtual-repeat.for="item of mp">
${item};${item[0]};${item[1]}
</div>
</template>
和
export class App {
map = new Map([["one", "foo"], ["two", "bar"]]);
mp = Array.from(map);
}