数据集与typeahead.js无序呈现

时间:2013-09-21 18:32:24

标签: typeahead.js

我使用typeahead搜索3个数据集。当我不包含minLength时,数据集按照我们的代码中列出的顺序呈现;当我为某些数据集包含minLength而不是全部时,订单会更改(请参阅下面的代码)。我遇到的问题是我希望用户列表始终呈现在下拉列表中首先显示,主题列表始终显示在第二个,而sec-list始终显示为第三个。

$('#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                                   
    }
]);

1 个答案:

答案 0 :(得分:0)

好的,所以在Typeahead中查看dropdown_view.js的代码,看起来你所描述的是正确的,并且没有改变代码就没有办法(至少现在没有想到的)。< / p>

当数据集与查询匹配时,代码将会看到数据集中是否有建议。如果是这样,它将只更新该数据集的建议。否则,它将在保管箱中创建一个新的“数据集”部分,将该数据集追加到最下方的下拉列表中。

因此,您看到它们的顺序在第一次之后不会改变(即:3将始终在1之前,如果是这种情况),并且该顺序取决于哪个数据集首先与您的查询匹配。< / p>

对于您而言,由于minLength的不同而发生变化。

我想你可以分叉并改变代码 - 这是一个很小的改变。

否则,我想你也可以编写一个非常丑陋的黑客来使用内部函数,并为每个数据集渲染一次虚拟建议的一次性列表。