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

Oli*_*old 0 windows-runtime winjs

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

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

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

Ada*_*man 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();
Run Code Online (Sandbox Code Playgroud)

notifyReload被调用时,谓语将被重新应用到再生过滤列表中的内容.在此片段中,调用console.log将让您了解如何重新应用过滤器.