我有这个代码来设置twitter typeahead并且它根本不起作用。我验证了json是正确的格式并且具有正确的价值等。任何帮助将非常感激。目前,它只记录'Initializing autocomplete'
行。永远不会调用过滤器中的日志,这似乎是由于某种原因引擎未初始化。当我输入时,我看到我定义的空模板。我也做了验证,确保coffeescript编译成正确的格式。
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 :(得分:0)
我意识到我的愚蠢错误,我用来测试列表是否存在的过滤器回调是否返回undefined,因为它是console.log
的返回值