我有一个用于Typeahead输入的远程Bloodhound源。远程源返回书籍列表及其发布日期。 Typeahead输入允许用户键入标题,然后使用远程数据自动填充以包括日期。
我想仅使用书名设置输入的初始值(我不知道该点的发布日期),然后将值更新为日期。这对我的代码工作正常。
但是,我想在值更新时监听事件以包含数据。这样我就可以将日期设置为页面中其他位置的属性。
如何获取获取远程数据且日期已知的点?
这是我的代码:
var books = new Bloodhound({
datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.num); },
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: 'https://www.googleapis.com/books/v1/volumes?q=quilting',
transform: function(response) {
return response.items;
}
}
});
books.initialize();
$('input').typeahead(null, {
displayKey: function(suggestion) {
return suggestion.volumeInfo.title + ' (' + suggestion.volumeInfo.publishedDate + ')';
},
source: books.ttAdapter()
});
$('input').typeahead('val', 'Your First Quilt Book');
// Question:
// When the 1997 date of this book is known, set it elsewhere in the page?
JSFiddle:http://jsfiddle.net/2Cres/50/
我已经尝试过收听displayKey
,但在第一次加载时似乎会多次启动。