我在Windows-8 Metro界面的JavaScript项目中使用WinJS.UI.ListView
。
这是HTML代码:
<div id="myMain">
<div id="myListTemplate" data-win-control="WinJS.Binding.Template">
<div class="myListViewItem">
<p data-win-bind="innerText: description"></p>
</div>
</div>
<div id="myListView"
data-win-control="WinJS.UI.ListView"
data-win-options="{ itemTemplate: myTemplate, layout: {type: WinJS.UI.ListLayout} }">
</div>
</div>
JavaScript的一部分:
ready: function (element, options) {
// Set up the ListView.
var myLView = myListView.winControl;
WinJS.UI.setOptions(favoritesLView, {
itemDataSource: dataSource,
oniteminvoked: this.onItemInvoked.bind(this),
selectionMode: WinJS.UI.SelectionMode.none
});
},
其中dataSource
是存储列表信息的位置。它是从以下列表获得的列表:
var myList = new WinJS.Binding.List(myJSONarray);
代码在横向和纵向视图中工作,但在捕捉视图中不起作用。尽管myList
包含所有元素,但列表视图显示为空。
这是Windows 8中的错误吗?有人知道要解决它的解决方法吗? 我发现此链接存在同样的问题,但其解决方案对我不起作用: http://social.msdn.microsoft.com/Forums/pl-PL/winappswithhtml5/thread/ce8c722d-526b-4226-9e40-642ddb37422b
答案 0 :(得分:0)
不显示ListView的一个原因是元素或任何父元素的显示是否设置为“无”。当元素再次可见时,您需要调用listView.forceLayout()。请参阅MSDN中的以下说明,http://msdn.microsoft.com/en-us/library/windows/apps/hh758352.aspx
设置ListView或其父级的style.display属性时 要素“无”,该应用程序会丢弃有关这些元素的布局信息 元素。当您将显示属性的值更改回a时 使一切再次可见的风格,应用程序将布局所有 元素,但ListView不会收到有关当前的信息 布局并将具有无效的布局。你可以解决这个问题 再次使ListView可见时调用此函数。