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 に答える