获取后映射预先输入建议

时间:2014-02-25 12:23:18

标签: javascript typeahead.js typeahead twitter-typeahead bloodhound

我正在使用上一次推特预订。

var suggestions = new Bloodhound({
        datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.value); },
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        remote: {url:'/xxx?text=%QUERY',
            ajax:{
                type : 'post',
                dataType : 'json'
            }
        }
    });
    suggestions.initialize();

    $('.typeahead').typeahead(null, {
        displayKey: 'id',
        source: suggestions.ttAdapter(),
        templates: {
            empty: '<p style="width:50%;margin:auto;">No result</p>',
            suggestion: function(object){
                    var str = ['<p>',
                        object.id,
                        '</p><a class="btn btn-info btn-small" href="item.html?id="',
                        object.id,
                        '>Open</a>'].join('');

                    return str;
                }
        }
    });

问题是我收到了5个

类型的对象
{
id: 0,
field: '', 
value: ''
}

所有5个对象都具有相同的ID,因此一个结果的字段,应该放入一个建议。 Typeahead将其视为单独建议我不想

如何映射ajax调用的结果,转换它并将结果传递回typeahead?

1 个答案:

答案 0 :(得分:1)

您可以使用filter(parsedResponse)自行解析响应。您可以看到一个示例(对于无关答案)here