我在使用 createFiltered() 创建的 WinJS.Binding.List 上使用实时过滤投影。
过滤谓词对由侦听 Windows.ApplicationModel.Search.SearchPane.getForCurrentView().onquerysubmitted 的事件处理程序设置的字符串变量进行操作。
当搜索字符串更改时,如何触发对过滤投影的重新评估?
我在使用 createFiltered() 创建的 WinJS.Binding.List 上使用实时过滤投影。
过滤谓词对由侦听 Windows.ApplicationModel.Search.SearchPane.getForCurrentView().onquerysubmitted 的事件处理程序设置的字符串变量进行操作。
当搜索字符串更改时,如何触发对过滤投影的重新评估?
您需要更改谓词过滤器用于检查项目的变量,然后调用notifyReload()
源列表。这是一个小代码片段来演示:
var mainList = new WinJS.Binding.List(["one", "two", "three"]);
var filterString = "t";
function filter(item) {
var result = item.indexOf(filterString) > -1;
console.log("Filter: " + item + " " + result);
return result;
};
var filteredList = mainList.createFiltered(filter);
filterString = "e";
mainList.notifyReload();
当notifyReload
被调用时,谓词将被重新应用以重新生成过滤列表的内容。在这个片段中,调用console.log
将让您看到过滤器是如何被重新应用的。