0

3 つのデータセットの検索に先行入力を使用しています。minLength を含めない場合、データセットはコードにリストされている順序でレンダリングされます。すべてではなく一部のデータセットに minLength を含めると、順序が変わります (以下のコードを参照)。私が抱えている問題は、ユーザー リストを常にドロップダウンの最初に表示し、トピック リストを常に 2 番目に表示し、sec-list を常に 3 番目に表示することです。

$('#autocomplete').typeahead([
    {
      name: 'users-list',                                                        
      prefetch: {url: "/prefetch_users/", ttl:1},
      template: [                                                                 
        '<p class=""><a href={{url}}>{{name}}</a></p>',                              
        '<img class="userimg_small" src="{{img}}">'                         
      ].join(''),                                                                 
      engine: Hogan, 
      limit: 4,                                                          
      minLength: 2
    },
    {
      name: 'topic-list',                                                        
      prefetch: {url: "/prefetch_topics/", ttl:1},
      template: '<p class=""><a href={{url}}>{{value}}</a></p>',
      engine: Hogan,
      limit: 3,
      minLength: 3                                            
    },
    {
      name: 'sec-list',                                                        
      prefetch: {url: "/prefetch_secs/", ttl:1},
      remote: {url: "/remote_secs/?q=%QUERY", ttl:1, rateLimitWait: 150},
      template: '<p class=""><a href={{url}}>{{ticker}} - {{name}}</a></p>',
      engine: Hogan                                   
    }
]);
4

1 に答える 1

0

OK、dropdown_view.jsTypeahead のコードを調べると、あなたが説明していることは正しいように見えます。コードを変更しない限り、それを回避する方法はありません (少なくとも、今は思い浮かびません)。

データセットがクエリに一致するたびに、コードはデータセットからの提案があったかどうかを確認します。その場合、そのデータセットの提案を更新するだけです。それ以外の場合は、ドロップボックスに新しい「データセット」セクションが作成され、そのデータセットがドロップダウンの一番下に追加されます。

したがって、それらが最初に表示される順序は変更されません (つまり、3 は常に 1 の前になります。これがあった場合)。その順序は、どのデータセットがクエリに最初に一致するかによって異なります。

あなたにとって、それは の違いによって変わりますminLength

コードをフォークして変更できると思いますが、これは小さな変更です。

それ以外の場合は、内部関数を使用するための非常に醜いハックを作成し、各データセットごとに 1 つのダミー提案の 1 回限りのリストをレンダリングすることもできると思います。

于 2013-09-23T14:43:34.577 に答える