KnockoutJsフィルターは、検索後にリストを空にします

ガバーランド

KnockoutJsを使用して検索リストを作成しています。コードは次のとおりです。

HTML:

<input type="search" id="search-bar" placeholder="Enter a name" data-bind="value:query,valueUpdate: 'keyup'">
<div id="list" data-bind='template: {foreach: name}'>
    <li data-bind='text $data'></li>
</div>

Js検索機能の一部:

this.name = ko.observable('');
this.query = ko.observable('');
this.search = function (value) {
    self.name([]);
    for (var x in name) {
        if (name[x].toLowerCase().indexOf(value.toLowerCase()) >= 0) {
            self.name.push(name[x]);
        }
    }
}

this.query.subscribe(self.search);

データ(2-Dリスト)は$ .getを使用して別のURLから取得され、解析されます。次に、解析されたデータのすべての最初のエントリ(arsed_data [i] [0])を、コードに示されている監視可能な名前として割り当てました。

このリストは、検索ボックスのエントリに従ってコンテンツをフィルタリングすることを目的としており、最初はすべての名前が表示されますが、検索ボックスに何かを入力するとすぐに名前リストが空になります。考えられる原因は何ですか。修理する?

Oleksandr Tyshchenko

配列(実際にそうあるべきです)と現在の値のself.filteredNames両方に依存する計算されたオブザーバブル(たとえば)を導入することをお勧めします。ビューモデル定義のフラグメントの代わりにテンプレートをバインドできます。次のようになります。self.namesko.observableArrayself.queryself.filteredNamesself.names

self = this;
/* ... any other code related to VM */
self.names = ko.observableArray([]);    //    it's supposed to be later filled with AJAX requests
//  self.names = ko.observableArray(['foo', 'bar', 'baz']);    //    however you can try with this not to bother with actual data loading
self.query = ko.observable('');
self.filteredNames = ko.pureComputed(function(){
    //    value of this pureComputed observable would be automatically updated each time either self.query or self.names is updated
    return self.names().filter(function(item) { 
        return item.toLowerCase().indexOf(self.query().toLowerCase()) >= 0;
    });
});
/* ... any other code related to VM */

それがどのように機能するかをテストできるマークアップのバージョンは、次のようになります。

<input type="search" id="search-bar" placeholder="Enter a name" data-bind="value:query,valueUpdate: 'keyup'">
<ul id = "list" data-bind='foreach: filteredNames'>
    <li data-bind=' text: $data'></li>
</div>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Ajax-検索フィールドが空になった後、divに前のデータをリロードします

分類Dev

VBScriptでWMIを検索した後、「ForEach」ステートメントの前に検索フィルターを作成できますか?

分類Dev

最初に注文ディレクトリを検索し、最後にファイルを検索します

分類Dev

ネイティブ検索フィルターに反応し、モーダルを開いて検索とリストを選択します

分類Dev

検索オプションを使用する方法はありますか:すべてのディレクトリですが、フォルダの最初のレイヤーを検索した後、次のフォルダにスキップします

分類Dev

リストビューの検索フィルターは、アイテムのクリック時に間違った結果を返します

分類Dev

リストビューの検索フィルターは、アイテムのクリック時に間違った値を返します

分類Dev

PHP検索フィルターは結果をアルファベット順にソートします

分類Dev

Akkaはフィルター後にkafkaコミットオフセットをストリームします

分類Dev

ページを再訪するたびにjqgridフィルターの検索をトリガーします

分類Dev

オートフィルターを削除せずに、フィルター処理された列で最後に入力された行を検索します

分類Dev

Recyclerviewは、「検索」または「フィルタリング」の後に「ソート」されません

分類Dev

JIRAは基本的な検索フィルターにどのツールキットを使用しますか?

分類Dev

jQuery検索フィルターはリストアイテムヘッダーを表示します

分類Dev

qでネストされたリストをどのようにフィルタリングまたは検索しますか

分類Dev

AppleScript:検索またはスマートメールボックスに基づいてメッセージをフィルタリングする方法は?

分類Dev

検索が成功した後、検索テキストボックスが空の場合、データのすべてのリストをプルしません

分類Dev

ElasticSearchは空のフィールドを検索します

分類Dev

swiftuiの検索バーを使用してリストをフィルタリングするにはどうすればよいですか

分類Dev

複数のフィルタを使用してJavaストリームのリストを検索します

分類Dev

ディレクトリプレフィックス名に基づいてファイルを検索し、ディレクトリにコピーします

分類Dev

テキストファイル:文字列を検索し、文字列フィールドをvarに保存し、2番目の文字列を検索し、フィールドをvarに置き換え、最後まで繰り返します

分類Dev

データの検索/フィルタリング中に空のフィールドを処理するにはどうすればよいですか?

分類Dev

DIRでファイルを検索した後、ディレクトリに移動します

分類Dev

egrepは、ファイルの内容を検索するときに空のスペースを無視します

分類Dev

jqGridフィルターは検索しますが、ページネーション内をナビゲートしようとすると、検索後にページネーションが失われます

分類Dev

選択後、検索フィールドのテキストを削除します

分類Dev

nodejsとmongodbのフィールドでパラメーターを使用すると、空になるクエリを検索します

分類Dev

検索またはフィルタリングする前に、jqueryを要素に戻します

Related 関連記事

  1. 1

    Ajax-検索フィールドが空になった後、divに前のデータをリロードします

  2. 2

    VBScriptでWMIを検索した後、「ForEach」ステートメントの前に検索フィルターを作成できますか?

  3. 3

    最初に注文ディレクトリを検索し、最後にファイルを検索します

  4. 4

    ネイティブ検索フィルターに反応し、モーダルを開いて検索とリストを選択します

  5. 5

    検索オプションを使用する方法はありますか:すべてのディレクトリですが、フォルダの最初のレイヤーを検索した後、次のフォルダにスキップします

  6. 6

    リストビューの検索フィルターは、アイテムのクリック時に間違った結果を返します

  7. 7

    リストビューの検索フィルターは、アイテムのクリック時に間違った値を返します

  8. 8

    PHP検索フィルターは結果をアルファベット順にソートします

  9. 9

    Akkaはフィルター後にkafkaコミットオフセットをストリームします

  10. 10

    ページを再訪するたびにjqgridフィルターの検索をトリガーします

  11. 11

    オートフィルターを削除せずに、フィルター処理された列で最後に入力された行を検索します

  12. 12

    Recyclerviewは、「検索」または「フィルタリング」の後に「ソート」されません

  13. 13

    JIRAは基本的な検索フィルターにどのツールキットを使用しますか?

  14. 14

    jQuery検索フィルターはリストアイテムヘッダーを表示します

  15. 15

    qでネストされたリストをどのようにフィルタリングまたは検索しますか

  16. 16

    AppleScript:検索またはスマートメールボックスに基づいてメッセージをフィルタリングする方法は?

  17. 17

    検索が成功した後、検索テキストボックスが空の場合、データのすべてのリストをプルしません

  18. 18

    ElasticSearchは空のフィールドを検索します

  19. 19

    swiftuiの検索バーを使用してリストをフィルタリングするにはどうすればよいですか

  20. 20

    複数のフィルタを使用してJavaストリームのリストを検索します

  21. 21

    ディレクトリプレフィックス名に基づいてファイルを検索し、ディレクトリにコピーします

  22. 22

    テキストファイル:文字列を検索し、文字列フィールドをvarに保存し、2番目の文字列を検索し、フィールドをvarに置き換え、最後まで繰り返します

  23. 23

    データの検索/フィルタリング中に空のフィールドを処理するにはどうすればよいですか?

  24. 24

    DIRでファイルを検索した後、ディレクトリに移動します

  25. 25

    egrepは、ファイルの内容を検索するときに空のスペースを無視します

  26. 26

    jqGridフィルターは検索しますが、ページネーション内をナビゲートしようとすると、検索後にページネーションが失われます

  27. 27

    選択後、検索フィールドのテキストを削除します

  28. 28

    nodejsとmongodbのフィールドでパラメーターを使用すると、空になるクエリを検索します

  29. 29

    検索またはフィルタリングする前に、jqueryを要素に戻します

ホットタグ

アーカイブ