【问题标题】:Typeahead.js not filtering results when typingTypeahead.js 在输入时不过滤结果
【发布时间】:2014-04-03 02:57:00
【问题描述】:

我对 typeahead.js 使用以下代码

var countries = new Bloodhound({
    datumTokenizer: function(d) {
        return Bloodhound.tokenizers.whitespace(d.en_name);
    },queryTokenizer: Bloodhound.tokenizers.whitespace,
    limit: 100,
    remote: {
        url: 'http://domain.com/json.php?action=countries',
    }
});

countries.initialize();

$('.lang').typeahead(null, {
    name: 'countries',
    displayKey: 'en_name',
    source: countries.ttAdapter()
});

json 是:

[{"id":"1","cz_name":"\u010de\u0161tina","en_name":"Czech"},{"id":"2","cz_name":"angli\u010dtina","en_name":"English"},{"id":"3","cz_name":"n\u011bm\u010dina","en_name":"German"}]

当我开始输入任何内容时,即使是与任何所需结果都不匹配的内容,我都会得到所有建议。

当我使用时:

var countries = new Bloodhound({
        datumTokenizer: function(d) {
            return Bloodhound.tokenizers.whitespace(d.en_name);
        },queryTokenizer: Bloodhound.tokenizers.whitespace,
        limit: 100,
        local: [{"id":"1","cz_name":"\u010de\u0161tina","en_name":"Czech"},{"id":"2","cz_name":"angli\u010dtina","en_name":"English"},{"id":"3","cz_name":"n\u011bm\u010dina","en_name":"German"}]
    });

它工作得很好。我做错了什么?

【问题讨论】:

    标签: javascript typeahead.js


    【解决方案1】:

    我在这里找到了答案:https://github.com/twitter/typeahead.js/issues/248

    在对此进行了更多思考后,我意识到远程 api 必须负责返回过滤结果,而不是预先输入。由于我使用的是静态 json 数据源,因此每次应该使用预取时,我返回的结果都是相同的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2015-10-23
      • 2019-10-16
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多