我正面临一个非常烦人的 grouped 行为WinJS.Binding.List
。
在尝试创建 SemanticZoom 时,我使用来自以下位置的相同数据填充(标记)缩小的视图项和放大的视图标题list.groups.dataSource
:
<div id="semanticZoomDiv" data-win-control="WinJS.UI.SemanticZoom" data-win-options="{ initiallyZoomedOut: true }">
<div id="zoomedInListView"
data-win-control="WinJS.UI.ListView"
data-win-options="{
itemDataSource: Data.myCategories.dataSource,
itemTemplate: select('#zoomedInItemTemplate'),
groupDataSource: Data.myCategories.groups.dataSource,
groupHeaderTemplate: select('#zoomedInHeaderTemplate')
}"
></div>
<div id="zoomedOutListView"
data-win-control="WinJS.UI.ListView"
data-win-options="{
itemDataSource: Data.myCategories.groups.dataSource,
itemTemplate: select('#zoomedOutItemTemplate')
}"
></div>
</div>
此代码是否有效取决于我的数据:
如果我使用我的真实世界数据,它是从远程数据生成的 3 级类别树(我称为 WinJS.xhr),则缩小的 ListView 无法将其 itemDataSource 与组绑定。所以我的 SemanticZoom 处理得很好,但缩小的视图是空的。
更准确地说,在我的缩小视图中:
此代码失败:
data-win-options="{ itemDataSource: Data.myCategories.groups.dataSource, itemTemplate: select('#zoomedOutItemTemplate') }"
此代码有效,但在我想要组时显示详细类别:
data-win-options="{ itemDataSource: Data.myCategories.dataSource, itemTemplate: select('#zoomedOutItemTemplate') }"
这段代码有效,这证明了我早些时候打电话时我的组格式
createGrouped
正确,但这样做对我来说毫无意义,因为我需要缩小视图来仅显示要缩放的主要组:data-win-options="{ itemDataSource: Data.myCategories.dataSource, itemTemplate: select('#zoomedOutItemTemplate'), groupDataSource: Data.myCategories.groups.dataSource }"
如果我使用示例和更简单的数据,一切正常,我可以使用我的 SemanticZoom。
由于错误似乎取决于我的输入数据而发生,下面是我定义的原始数据的两个片段WinJS.Binding.List
:
真实世界的数据,不起作用:(从我生成的数据中进行 json 字符串化)
var myCategories = [{ "id":"CAT_1_1", "title":"Category 1.1", "groupKey":0, "groupId":"CAT_1", "groupTitle":"Category 1" }, {...}];
样本数据,工作:(手写)
var myCategories = [ { group: 1, id: "1.1", title: "item 1.1" }, { group: 1, id: "1.2", title: "item 1.2" }, ];
仅供参考:-错误不是来自模板,我检查过。
感谢您的帮助,我已经为此苦苦挣扎了2天...