Windows 8 如何在WinJS ListView中使用可观察对象
我想在Windows8RT(开发者预览自Build2011)(使用JavaScript)中的ListView中使用一个可观察的对象 下面的代码似乎应该可以工作。它有一个简单的模板,用于在HTML中显示每个对象的标题和描述,以及WinJS.UI.Listview组件的基本用法 我希望看到一个对象列表,但当列表包含时,总是会看到“等待微调器” 实验上,我注意到,如果代码没有将整个列表(除了3个)转换为可观察的,那么列表就会显示出来。通过进行一些调试,它似乎与时间有关,WinJS框架由于某种原因(在ScrollView代码中调用realizeItems时,错误计数的情况发生得很深)计算错误,无法完全呈现ListView(因为一些对象处于“挂起状态”)。如果我注释掉Windows 8 如何在WinJS ListView中使用可观察对象,windows-8,windows-runtime,winjs,Windows 8,Windows Runtime,Winjs,我想在Windows8RT(开发者预览自Build2011)(使用JavaScript)中的ListView中使用一个可观察的对象 下面的代码似乎应该可以工作。它有一个简单的模板,用于在HTML中显示每个对象的标题和描述,以及WinJS.UI.Listview组件的基本用法 我希望看到一个对象列表,但当列表包含时,总是会看到“等待微调器” 实验上,我注意到,如果代码没有将整个列表(除了3个)转换为可观察的,那么列表就会显示出来。通过进行一些调试,它似乎与时间有关,WinJS框架由于某种原因(在S
enableFirstChanceException
函数调用,它在比较函数itemChanged中的两个对象时失败(但我不知道是否相关)(不支持值参数中的循环引用)
你知道如何在可观测物体上实现这一点吗
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=1024, height=768" />
<title>WinWebApp1</title>
<!-- WinJS references -->
<link rel="stylesheet" href="/winjs/css/ui-dark.css" />
<script type="text/javascript" src="/WinJS/js/base.js"></script>
<script type="text/javascript" src="/WinJS/js/ui.js"></script>
<script type="text/javascript" src="/WinJS/js/binding.js"></script>
<script type="text/javascript" src="/WinJS/js/controls.js"></script>
<script type="text/javascript" src="/WinJS/js/res.js"></script>
<script type="text/javascript" src="/WinJS/js/animations.js"></script>
<script type="text/javascript" src="/WinJS/js/uicollections.js"></script>
<script type="text/javascript" src="/WinJS/js/wwaapp.js"></script>
<!-- WinWebApp1 references -->
<link rel="stylesheet" href="/css/default.css" />
<script src="/js/default.js"></script>
</head>
<body>
<div id="itemTemplate" data-win-control="WinJS.Binding.Template" >
<div class="itemContainer">
<!-- Displays the "title" field. -->
<div class="itemTitle" data-win-bind="innerText: title">
</div>
<!-- Displays the "description" field. -->
<div class="itemDescription" data-win-bind="innerText: description">
</div>
</div>
</div>
<div data-win-control="WinJS.UI.ViewBox">
<div class="fixed-layout">
<div id="basicListView" data-win-control="WinJS.UI.ListView" data-win-options="{itemRenderer: itemTemplate}">
</div>
</div>
</div>
</body>
</html>
WinWebApp1
还有JavaScript:
(function () {
'use strict';
// Uncomment the following line to enable first chance exceptions.
//Debug.enableFirstChanceException(true);
var myData = [
{ title: "Banana", description: "Banana Frozen Yogurt"},
{ title: "Orange", description: "Orange Sherbet"},
{ title: "Vanilla", description: "Vanilla Ice Cream"},
{ title: "Mint", description: "Mint Gelato"},
{ title: "Strawberry", description: "Strawberry Sorbet"},
{ title: "Kiwi", description: "Kiwi Sorbet" }
];
// this works:
//var myDataSource = new WinJS.UI.ArrayDataSource(myData);
// this does not:
for (var i = 0; i < myData.length ; i++) {
myData[i] = WinJS.Binding.as(myData[i]);
}
var myDataSource = new WinJS.UI.ArrayDataSource(myData);
document.addEventListener("DOMContentLoaded", function (e) {
WinJS.UI.processAll()
.then(function () {
var basicListView = WinJS.UI.getControl(document.getElementById("basicListView"));
basicListView.dataSource = myDataSource;
// when the observable works correctly, this should work (and live change the list)
//setTimeout(function () {
// basicListView.refresh();
// myData[0].title = "Yellow Banana";
// myData[5].title = "Kiwisicle";
//}, 3000);
});
});
WinJS.Application.start();
})();
(函数(){
"严格使用",;
//取消注释以下行以启用首次机会异常。
//Debug.enableFirstChanceException(true);
var myData=[
{标题:“香蕉”,描述:“香蕉冷冻酸奶”},
{标题:“橙色”,描述:“橙色果子露”},
{标题:“香草”,描述:“香草冰淇淋”},
{标题:“薄荷”,描述:“薄荷冰淇淋”},
{标题:“草莓”,描述:“草莓冰糕”},
{标题:“猕猴桃”,描述:“猕猴桃冰糕”}
];
//这项工作:
//var myDataSource=new WinJS.UI.ArrayDataSource(myData);
//这并不是:
对于(var i=0;i
你有没有想过这一点?我可能遇到了这个问题。我想我遇到了另一个问题,我的可观测对象更新正确。我的问题是语义缩放控件没有正确更新其布局。你有没有发现这个问题?我可能遇到了这个问题。我想我遇到了另一个问题,我的可观测对象更新正确。我的问题是语义缩放控件没有正确更新其布局。