强制重新评估实时过滤的IListDataSource

时间:2012-08-14 08:12:51

标签: windows-runtime winjs

我在使用createFiltered()创建的WinJS.Binding.List上使用实时过滤投影。

过滤谓词对一个字符串变量进行操作,该变量由监听Windows.ApplicationModel.Search.SearchPane.getForCurrentView()。onquerysubmitted的事件处理程序设置。

当搜索字符串发生变化时,如何触发重新评估过滤后的投影?

1 个答案:

答案 0 :(得分:5)

您需要更改谓词过滤器用于检查项目的变量,然后在源列表中调用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的调用将让您了解如何重新应用过滤器。

相关问题