0

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

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

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

4

1 回答 1

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将让您看到过滤器是如何被重新应用的。

于 2012-08-14T17:04:59.767 回答