2017-10-10 6 views
2

ノックアウトの新機能で、デモ用のデータバインディングの例を簡単に表示しようとしています。私は、リストアイテムのテキストを隠しておき、一致するものだけを表示したい。どのようにデータを非表示にし、一致する場合にのみ表示するのですか?

http://jsfiddle.net/4y8jgsyg/

var viewModel = { 
    query: ko.observable('') 
}; 

viewModel.beers = ko.dependentObservable(function() { 
    var search = this.query().toLowerCase(); 
    return ko.utils.arrayFilter(beers, function(beer) { 
     return beer.name.toLowerCase().indexOf(search) >= 0; 
    }); 
}, viewModel); 

ko.applyBindings(viewModel); 
+1

検索ボックスが空の場合隠された他のアイテムを保持するために意味するか:

viewModel.beers = ko.dependentObservable(function() { var search = this.query().toLowerCase(); if(search && search.length > 0) { return ko.utils.arrayFilter(beers, function(beer) { return beer.name.toLowerCase().indexOf(search) >= 0; }); } else { return []; } }, viewModel); 

ここで更新フィドルですか? [this](http://jsfiddle.net/4y8jgsyg/1/)のように? – Nisarg

+0

ノックアウト1xは本当に古いです。 –

+1

@NisargShah正確に!ありがとう。私はKO 1が時代遅れであることを認識しています。 (これはやはり実証コードではなく、簡単なデモでした)。 – Jake

答えて

0

あなたは検索語が空の文字列でない場合にのみフィルタが返す結果ことを確認する必要があります。これはsearch.length > 0をチェックすることで簡単に実行でき、空の配列があればそれを返します。 http://jsfiddle.net/4y8jgsyg/1/

関連する問題