Windows 8 html中的嵌套WinJS.UI.ListView(metro应用程序)

Windows 8 html中的嵌套WinJS.UI.ListView(metro应用程序),windows-8,microsoft-metro,winjs,Windows 8,Microsoft Metro,Winjs,以下是html: <div class="itemtemplate" data-win-control="WinJS.Binding.Template"> <h4 class="title" data-win-bind="textContent: title"></h4> <div class="list" data-win-control="WinJS.UI.ListView" data-win-options="{ selection

以下是html:

<div class="itemtemplate" data-win-control="WinJS.Binding.Template">
    <h4 class="title" data-win-bind="textContent: title"></h4>
    <div class="list" data-win-control="WinJS.UI.ListView" data-win-options="{ selectionMode: 'none' }"></div>
</div>


<div class="groupeditemslist" data-win-control="WinJS.UI.ListView" data-win-options="{ selectionMode: 'none' }"></div>
如何在嵌套的WinJS.UI.ListView的完整html无javascript模板选择器中添加数据赢选项来绑定数据


对于主数据中的每个项目,我都添加了一个WinJS.Binding.List。

假设您的数据采用以下格式:

var firstLevelDataSource = new WinJS.Binding.List(
    [{title: "t1", secondLevelBinding: new WinJS.Binding.List([1])},
     {title: "t2", secondLevelBinding: new WinJS.Binding.List([2])}]);

// then you expose firstLevelDataSource as Data.firstLevelDataSource
那么,这不管用吗

<div class="itemtemplate" data-win-control="WinJS.Binding.Template">
    <h4 class="title" data-win-bind="textContent: title"></h4>
    <div class="list" data-win-control="WinJS.UI.ListView" data-win-options="{ selectionMode: 'none', itemDataSource: secondLevelBinding.dataSource }"></div>
</div>

<div class="groupeditemslist" data-win-control="WinJS.UI.ListView" data-win-options="{ selectionMode: 'none', itemDataSource: Data.firstLevelDataSource.dataSource }"></div>

假设您的数据采用以下格式:

var firstLevelDataSource = new WinJS.Binding.List(
    [{title: "t1", secondLevelBinding: new WinJS.Binding.List([1])},
     {title: "t2", secondLevelBinding: new WinJS.Binding.List([2])}]);

// then you expose firstLevelDataSource as Data.firstLevelDataSource
那么,这不管用吗

<div class="itemtemplate" data-win-control="WinJS.Binding.Template">
    <h4 class="title" data-win-bind="textContent: title"></h4>
    <div class="list" data-win-control="WinJS.UI.ListView" data-win-options="{ selectionMode: 'none', itemDataSource: secondLevelBinding.dataSource }"></div>
</div>

<div class="groupeditemslist" data-win-control="WinJS.UI.ListView" data-win-options="{ selectionMode: 'none', itemDataSource: Data.firstLevelDataSource.dataSource }"></div>

不幸的是,它没有。。。我得到一个JavaScript运行时错误:无法获取未定义或空引用的属性“dataSource”。当然,这是我的第一个想法@enguerran很高兴知道它不起作用。不过,我真的不明白为什么没有。我在FlipView中使用ListView做了类似的事情,但我使用了动态模板:当您说DynamicTemplate时,您告诉我们您使用template selector方法在currentItem上添加了一个带有javascript的新ListView?我想我会回到我以前实现的这个解决方案,但是发现更好的方法是把代码放进去html@enguerran我完全同意。我想我所有的ListView或FlipView都是从HTML代码开始的,但由于种种限制,最终都是Javascript模板。。。我得到一个JavaScript运行时错误:无法获取未定义或空引用的属性“dataSource”。当然,这是我的第一个想法@enguerran很高兴知道它不起作用。不过,我真的不明白为什么没有。我在FlipView中使用ListView做了类似的事情,但我使用了动态模板:当您说DynamicTemplate时,您告诉我们您使用template selector方法在currentItem上添加了一个带有javascript的新ListView?我想我会回到我以前实现的这个解决方案,但是发现更好的方法是把代码放进去html@enguerran我完全同意。我认为我所有的ListView或FlipView都是从HTML代码开始的,但由于各种限制,最终都是Javascript模板。