アプリケーションにセマンティック ズームを追加していますが、ズームアウトされたリストビューのデータ バインディングに問題があります。通常の(拡大された)リストビューでは、グループ化されたデータをバインドしていますが、正常にレンダリングされます。ズームアウトされたリストビューの場合、同じグループ化されたデータ (同じ itemDataSource と groupDataSource) をレンダリングしたいと思いますが、異なる itemTemplate と groupTemplate (通常のビューと同じですが小さい) を使用します。
私が抱えている問題は、ズームアウトすると、ui.js の 2117 行目で「0x800a138f - JavaScript ランタイム エラー: Object.defineProperty: 引数がオブジェクトではありません」というエラーが表示されることです。
ズームアウトしたリストビュー itemDataSource プロパティを groups.dataSource コレクションにバインドしようとしましたが、groupDataSource プロパティを設定しませんでした (Web で見つけたすべての例のように)。正常に動作します。
ズームアウト ビューが、通常のビューのようにグループ化されたアイテムをレンダリングしないのはなぜですか?
編集: ズームアウトされたビューは、通常の(ズームインされた)リストビューとは異なる方法で動作するようです。ズームイン ビューは 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>
ありがとう。ディエゴ