2012-08-14 29 views
0

我在使用createFiltered()创建的WinJS.Binding.List上使用实时筛选投影。强制重新评估活动筛选的IListDataSource

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

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

回答

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可以让您看到如何重新应用过滤器。