Windows 8 WinJS绑定到嵌套控件

Windows 8 WinJS绑定到嵌套控件,windows-8,microsoft-metro,winjs,Windows 8,Microsoft Metro,Winjs,我正在尝试在我的应用程序中实现语义缩放控制。以下是我的一页的片段: <div id="semanticZoomDiv" data-win-control="WinJS.UI.SemanticZoom"> <div id="zoomedInListView" class="win-selectionstylefilled" data-win-control="WinJS.UI.ListVie

我正在尝试在我的应用程序中实现语义缩放控制。以下是我的一页的片段:

<div id="semanticZoomDiv" data-win-control="WinJS.UI.SemanticZoom">

            <div id="zoomedInListView"
                class="win-selectionstylefilled"
                data-win-control="WinJS.UI.ListView"
                data-win-bind="winControl.itemDataSource: groupedList.dataSource; winControl.groupDataSource: groupedList.groups.dataSource;"
                data-win-options="{ 
                itemTemplate: select('#mediumListIconTextTemplate'), 
                groupHeaderTemplate: select('#headerTemplate'), 
                selectionMode: 'none', 
                tapBehavior: 'none', 
                swipeBehavior: 'none' 
            }">
            </div>

            <div id="zoomedOutListView"
                data-win-control="WinJS.UI.ListView"
                data-win-bind="winControl.itemDataSource: groupedList.groups.dataSource;"
                data-win-options="{  
                itemTemplate: select('#semanticZoomTemplate'), 
                selectionMode: 'none', 
                tapBehavior: 'invoke', 
                swipeBehavior: 'none' 
            }">
            </div>

        </div>
从semanticZoomDiv中,两个ListView呈现并正确填充了数据。WinJS似乎在将数据绑定到嵌套控件方面存在问题?(ListView控件位于SemanticZoom控件内部-移除外部SemanticZoom控件数据后正确绑定)


我通过data win选项通过绑定到全局名称空间成功实现了语义缩放,但我希望通过视图模型为我的页面提供数据,因此我尝试使用data win bind。

我认为这是一个对象范围问题,但目前还没有在Win8上验证。如果我是对的,您可以从JavaScript代码中公开
groupedList
,与此类似

WinJS.Namespace.define("YourApp", {
    groupedList: groupedList,
});
然后更改声明性绑定以包含
YourApp
命名空间。这样,数据就不在全局命名空间中

或者,您可以在.js文件中进行数据绑定

zoomedInListView.winControl.itemDataSource = groupedList.dataSource;
zoomedInListView.winControl.groupDataSource = groupedList.groups.dataSource;
zoomedOutListView.winControl.itemDataSource = groupedList.groups.dataSource;

谢谢你的意见。我在问题中提到,我设法使用全局名称空间(正如您所指出的)使其工作,但我使用的是视图模型。经过一些研究,我发现函数processAll不支持嵌套控件(例如语义缩放中的ListView)——没有为嵌套ListView初始化绑定。解决方案是对所有嵌套控件的容器执行processAll。
zoomedInListView.winControl.itemDataSource = groupedList.dataSource;
zoomedInListView.winControl.groupDataSource = groupedList.groups.dataSource;
zoomedOutListView.winControl.itemDataSource = groupedList.groups.dataSource;