Twitter 推特打字前进

Twitter 推特打字前进,twitter,typeahead,Twitter,Typeahead,问题#1: 我有以下代码: // NOTE: Initiate auto-complete $('#edit-keyword').typeahead({ remote: '/products/autocomplete.json/%QUERY', wildcard: '%QUERY' }).bind('typeahead:selected', function(object, datum) { console.log(object); }); 我从服务器返回

问题#1:

我有以下代码:

// NOTE: Initiate auto-complete
  $('#edit-keyword').typeahead({
    remote: '/products/autocomplete.json/%QUERY', 
    wildcard: '%QUERY'
  }).bind('typeahead:selected', function(object, datum) {
    console.log(object);
  });
我从服务器返回此JSON:

1: "Bustello Cafe Coffee Regular"
110: "Barista Prima Coffeehouse Coffee Pods K Cups Darkest Roast French Roast"
713: "Bolthouse Farms Protein Plus Coffee"
5680: "Bustello Cafe Coffee Regular"
5693: "Bustello Cafe Coffee Regular"
我应该在上面的代码片段中添加什么来检索与每个项关联的ID…现在“datum”只返回字符串值

问题#2:

我刚刚注意到JSON返回多个具有唯一ID的“Bustello Cafe Coffee Regular”,但呈现的下拉列表似乎一次只显示一个——我假设typeahead控件中存在Superss duplicates?它在哪里


Alex

如果需要,可以使用
typeahead:selected
typeahead:autocompleted
自定义事件获取与每个项目关联的
ID
,但是json需要一个适当的
ID
属性。。例如:

[{"ID":111, "Name":"blah"},{"ID":222, "Name":"buuu"}]
使用jquery和typeahead可以实现如下功能:

    $("#edit-keyword").on("typeahead:selected typeahead:autocompleted",
        function(e, datum) {
            // datum containts datum.ID here, do what you want with it
            //.. i.e. assign to a hidden input or knockout observable, etc.
        }
    );
至于您的重复问题,我还没有看到它的配置,typeahead将尝试将您的数据转换为typeahead基准(如果尚未转换),因此可能是typeahead中的
\u transformDatum
函数在执行此操作

我建议您自己尝试将数据结构化为typeahead数据,以避免这种情况,并查看发生的情况,查看它们通常是如何结构化的,在您的情况下,值将是
对象
,您需要指定适当的
valueKey
属性