我正在尝试使用typeahead.js在Angular2 app中实现typeahead。
<input id="city" type="text" placeholder="Choose City" />
typeahead.d.ts
declare function initTypeahead(data:any,id:any);
export = initTypeahead;
typeahead.js
if ('undefined' !== typeof module) {
module.exports = function initTypeahead(data, element) {
var _values = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: data
});
_values.initialize();
var elt = $(element);
elt.typeahead({
hint: true,
highlight: true,
minLength: 1,
}, {
// itemValue: 'code',
// itemText: 'value',
name: '_values',
displayKey: 'value',
source: _values.ttAdapter(),
}
);
elt.on('typeahead:selected', function (e, datum) {
console.log(datum.code);
elt.val(datum.code);
console.log(elt.val())
});
}
}
然后在 component.ts 中,如下调用typeahead函数,
initTypeahead(data, '#city');
示例数据
[{code: "AUH", value: "Abu Dhabi"}, {code: "ADL", value: "Adelaide"},…]
Typeahead工作得很好。我尝试在单击按钮时获取输入字段(城市)的选定值,如下所示 component.ts 文件。
$('#city').val();
如果我选择阿布扎比,它会将阿布扎比作为输入字段的选定值,但我需要获取代码( AUH )作为选定的值。
我该怎么做?任何建议都非常感谢。
谢谢