3

会社の検索に Typeahead/Bloodhoud を使用していますが、オートコンプリート セクションに十分な一致が表示されません。

- - - - - 探す - - - - -

ここに画像の説明を入力

制限が 5 であるため、少なくとも 5 つの結果が表示されるはずです。

---------- Ajax レスポンス ----------

ここに画像の説明を入力

Typeahead JS

companies = new Bloodhound({
    datumTokenizer: function(d) {
        return Bloodhound.tokenizers.nonword(d.id);
    },
    queryTokenizer: Bloodhound.tokenizers.nonword,
    remote: 'access/companies?q=%QUERY'
});
companies.initialize();
$('#companySearch').typeahead({
    highlight: true,
    source: companies.ttAdapter(),
    updater: selectCompany
});

すべての結果が期待どおりに表示されるようにするにはどうすればよいですか? ドキュメント/ソース コードを調べて、見落としたはずのオプションを探していて、思いつくのに苦労していました。

4

2 に答える 2

1

この場合、単純に、ブートストラップ スタイルのオートコンプリート メニューとして先行入力を使用したかっただけです。つまり、結果を照合するためのロジックを JS に任せたくありませんでした。文書化されていない (この投稿の時点で) 構成設定があり、これを使用するとmatcher、先行入力が結果をフィルター処理する方法をカスタマイズできます。すべての結果が返されるように、単純に上書きしました。

$('#companySearch').typeahead({
    highlight: true,
    minLength: 1,
    source: companies.ttAdapter(),
    updater: selectCompany,
    matcher: function (t) {
        return t;
    }
});
于 2015-02-25T00:12:13.357 に答える
0

typeahead 呼び出し内に「displayKey」を追加する必要があります。
あなたの場合、Displaykeyは「名前」でなければなりません。
このようなもの:

// instantiate the typeahead UI
$( '#companySearch').typeahead(null, {
  displayKey: 'name',
  source: companies.ttAdapter()
});
于 2015-02-23T04:38:56.040 に答える