我正在向我的应用程序添加语义缩放,并且在缩小的列表视图中遇到数据绑定问题。在普通(放大)列表视图中,我正在绑定分组数据并且它呈现得很好。对于缩小的列表视图,我想呈现相同的分组数据(相同的 itemDataSource 和 groupDataSource),但使用不同的 itemTemplate 和 groupTemplate(与普通视图相同但更小)。
我遇到的问题是,当我缩小时,我在 ui.js 第 2117 行收到错误消息“0x800a138f - JavaScript 运行时错误:Object.defineProperty:参数不是对象”。
我尝试将缩小的 listview itemDataSource 属性绑定到 groups.dataSource 集合,而不是设置 groupDataSource 属性(就像我在网上找到的所有示例一样),我工作正常。
为什么缩小视图不像普通视图那样呈现分组项目?
编辑: 似乎缩小视图的行为方式与正常(放大)列表视图不同。虽然放大视图接受 itemDataSource 和 groupDataSource,但缩小视图只接受 itemDataSource。我编辑了Microsoft Official Semantic Zoom Sample (scenario2.html) 并将 zoomedOutListView 更改为使用 myGroupedList.dataSource 作为 itemDataSource 并且出现了同样的问题。
之前的代码:
<div id="zoomedOutListView"
data-win-control="WinJS.UI.ListView"
data-win-options="{
itemDataSource: myGroupedList.groups.dataSource,
itemTemplate: semanticZoomTemplate,
selectionMode: 'none',
tapBehavior: 'invoke',
swipeBehavior: 'none'
}"
></div>
之后的代码(重现问题):
<div id="zoomedOutListView"
data-win-control="WinJS.UI.ListView"
data-win-options="{
itemDataSource: myGroupedList.dataSource, //originally was myGroupedList.groups.dataSource
itemTemplate: semanticZoomTemplate,
selectionMode: 'none',
tapBehavior: 'invoke',
swipeBehavior: 'none'
}"
></div>
谢谢。迭戈