我遇到了ListView未在其数据源中显示对象的最新详细信息的问题。通过调用WinJS.Binding.List 对象的createSorted 方法创建数据源。每个对象如下所示:
var obj = {
title: 'First item',
priority: 2
};
我像这样创建/设置数据源:
sortedItemList = itemList.createSorted(function (lhs, rhs) {
return rhs.priority - lhs.priority;
});
listView.itemDataSource = sortedItemList.dataSource;
ListView 的 itemTemplate 如下所示:
<div id="itemTemplate" data-win-control="WinJS.Binding.Template">
<div>
<h4 data-win-bind="innerText: title"></h4>
</div>
</div>
这两个字段的更改处理程序如下所示:
titleControl.onchange = function () {
curItem.title = titleControl.value;
sortedItemList.notifyMutated(sortedItemList.indexOf(curItem););
};
priorityControl.onchange = function () {
curItem.priority = priorityControl.value;
sortedItemList.notifyMutated(sortedItemList.indexOf(curItem););
};
createSorted 的文档说要确保在对象更改时调用 notifyMutated。如果我更改优先级,则 ListView 将适当地移动项目。但是,如果我编辑标题,则 ListView 不会更新以显示新标题。我究竟做错了什么?