0

我有这段代码来设置twitter typeahead,它根本不工作。我验证了json是正确的格式,并有正确的值等任何帮助将不胜感激。目前,它只记录'Initializing autocomplete'行。过滤器中的日志从不会被调用,这似乎是由于某种原因引擎未初始化。当我输入时,我看到了我定义的空模板。我也确认了确保将coffeescript编译成适当的格式。Twitter typeahead bloodhound not prefetching

initAutocomplete: -> 
    console.log 'Initializing autocomplete' 
    engine = new Bloodhound 
     datumTokenizer: (d) -> 
     Bloodhound.tokenizers.obj.whitespace(d.val) 
     queryTokenizer: Bloodhound.tokenizers.whitespace 
     limit: 10 
     prefetch: 
     url:'../api/v3/tickets/autocomplete' 
     filter: (list) -> 
      console.log 'List: ' 
      console.log list 
    engine.initialize() 

    $('#tt-ticket.typeahead').typeahead null, 
     name: 'tickets' 
     displayKey: 'val' 
     source: engine.ttAdapter() 
     templates: 
     empty: [ 
      '<div class="empty-message">', 
      'Unable to find any matches', 
      '</div>' 
     ].join('\n'), 
     suggestion: Handlebars.compile('<p><strong>{{key}}</strong> – {{value}}</p>') 

的JSON已经被证实具有这种格式:

[{"key":"Id","val":1}, {"key":"Some other key", "val" : "some val"}] 

回答

0

我意识到自己的愚蠢的错误,我用的过滤器的回调来测试是否存在被返回undefined,因为这是返回值的列表console.log