0

Ajax呼び出しで返されたJSONが2つの異なるモデルを使用しているため、テキストボックスの値が変更された場合、リストでフィルタリングしたいと思います。フィルター処理は、ajax 呼び出しから取得した JSON データを提供しているデータを非表示にするか、単にフィルター処理する必要があります。ありがとう

    Data = [{"code":"Grand Financial","cls":"Branch","Chk":true},{"code":"Joan Group","cls":"Branch","Chk":true}]



     var searchModel, advisorGroupModel;
        $(document).ready(function () {
          $.ajax({
                type: "GET",
                url: '/ASPNET/Reports/GetAdvisorGroups',
                dataType: "json",
                success: function (data) {
                    advisorGroupModel = {
                        advisorGroup: ko.observableArray(data)
                    };
                    ko.applyBindings(advisorGroupModel, document.getElementById("advisorGroupModel"));
                }
            })

            var searchModel = {
                searchQuery: ko.observable('')
            };
            searchModel.searchHandle= ko.dependentObservable(function () {
                var code = this.searchQuery().toLowerCase();
                return ko.utils.arrayFilter(advisorGroupModel, function (beer) {
                    debugger;
                    return beer.code.toLowerCase().indexOf(code) >= 0;
                });
                console.log(search);
            }, searchModel)

            ko.applyBindings(searchModel, document.getElementById("searchModel"));
        });

<div id="searchModel">
    <input data-bind="value: searchQuery, valueUpdate: 'keyup'" />
    <h6 data-bind="text: searchQuery"></h6>
</div>
<div class="CheckBoxListGroup" id="advisorGroupModel">
    <ul data-bind="template: { name: 'advisorGroupTemplate', foreach: advisorGroup, as: 'singleAdvisorGroup' }"></ul>
    <script type="text/html" id="advisorGroupTemplate">
        <li>
            <input type="checkbox" data-bind="attr: { value: code, id: code, checked: Chk }" name="GroupsSel">
            <label data-bind="attr: { for: code }, text: '' + code + ' (' + cls + ')' "></label>

        </li>
    </script>
</div>
4

1 に答える 1

0

ディスプレイをリスト全体にバインドしないでください。ディスプレイを、フィルター処理されたリストを返す計算関数にバインドするか、フィルターがない場合はすべての項目を返します。

次に、キーアップで filterlist 関数を呼び出してリストをフィルタリングし、フィルターに一致しないものを削除します

于 2013-11-13T06:16:26.390 に答える