0

私は、Soundcloud から取得した曲を表示するバックボーン アプリケーションに取り組んでいます。曲のコレクションのフィルターとして機能する検索バーがあります。

結果は曲のリストです

var matched = results.filter(function(model) { 
    return model.attributes.title.toLowerCase().indexOf(val.toLowerCase()) > -1
});
results.reset(matched);

これは問題なく動作し、入力すると曲が消えます。しかし、検索文字列に再び出会ったら、それらをコレクションに戻す方法を見つけようとしています。

この時点で、空の検索文字列に戻ると、表示されるのは検索で到達した結果だけです。

==================編集==================

これが私がやったことです

    $("#query").on('focus', function(){

    var history = results.clone();

    $(this).on('keyup', function(){
        var val = $(this).val();
        var matched = history.filter(function(model) { 
            return model.get('title').toLowerCase().indexOf(val.toLowerCase()) > -1
        });
        results.reset(matched)

    });
4

1 に答える 1

0

フィルタリングの代わりに、フィルターresultsの結果を別の配列に入れます (「一致」)。

元のコレクション コンテンツ (モデル) のコピーを保持します。

ビューは、一致するモデルの要素のみをレンダリングする必要があります。または、実際のモデル ロジックが含まれていないため、このロジックは完全にビュー レベルで発生する可能性があります。

于 2013-05-23T01:46:29.693 に答える