【发布时间】:2020-12-22 21:38:22
【问题描述】:
我正在使用 Twitter typeahead.js 库通过单个数据源 /api/domains 进行预输入搜索。
我现在想使用其他 API 端点再添加两个源:
/api/ips/api/hostnames
我将如何做到这一点?我需要使用 BloodHound 引擎来实现此功能吗?
现有代码
<script>
$('#header').on('click', '.tt-selectable', function() {
window.location.href = "/explore/" + $(this).attr('data-domain');
});
var substringMatcher = function(strs) {
return function findMatches(q, cb) {
var matches, substringRegex;
// an array that will be populated with substring matches
matches = [];
// regex used to determine if a string contains the substring `q`
substrRegex = new RegExp(q, 'i');
// iterate through the pool of strings and for any string that
// contains the substring `q`, add it to the `matches` array
$.each(strs, function(i, str) {
if (substrRegex.test(str)) {
matches.push(str);
}
});
cb(matches);
};
};
$.getJSON('/api/domains')
.done(function( json ) {
populateSuggestions(json.domains);
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
});
const populateSuggestions = function(data) {
$('.typeahead').typeahead({
hint: true,
highlight: true,
minLength: 1
}, {
displayKey: 'name',
limit: 10,
source: substringMatcher(data),
templates: {
suggestion: function (data) {
return "<div data-domain=" + data + ">" + data + "</div>"
}
}
});
}
</script>
现有 API 响应
{
domains: [
"a.com",
"b.com",
"c.com",
"d.com" ]
}
【问题讨论】:
标签: javascript typeahead.js twitter-typeahead bloodhound