我有一个jason复杂对象,包含名字,姓氏,middkle名称,FH名称和代理ID。我是uisng bootstrap-typehead,用于进行ajax调用以获取结果。用户可以输入名字,姓氏或代理ID。我想把所有上面的字段显示为lables,将代理ID显示为id。我正在解决未定义的错误。
$('#selectAgent').typeahead({
source: function (query, process) {
objects = [];
map = {};
var data = [{"AgentID": 3456,"FName": "Gary", "LName": "Means","MName": "K","FHName": "GaryFH Name"}, {"AgentID": 2050,"FName": "Kevin", "LName": "Mortha","MName": "V","FHName": "Keving FH Name"},{"AgentID": 5678,"FName": "Mike", "LName": "Hundt","MName": "","FHName": "Mike FH Name"}] // Or get your JSON dynamically and load it into this variable
$.each(data, function (i, object) {
map[object.label] = object;
objects.push(object.Fname + object.LName );
});
console.log(objects);
process(objects);
},
updater: function (item) {
$('id').val(map[item].AgentID);
return item;
}
});
//控制台日志
日志:undefinedMeans,undefinedMortha,undefinedHundt
答案 0 :(得分:0)
我已经解决了你的问题,它的区分大小写。您会看到您恰好引用了Fname
而不是FName
。在实践中,最好处理这样的任何不规则大写,只是使维护代码更容易。在对agentId和名称进行过滤方面,这有点困难,但我认为你会发现这里的解决方案合适。
我会传递整个用户记录,但是如果这是正常的字母数字项,则需要您定义排序和已经存在的所有排序。如果我这样做,我会尝试通过传递原型来使其工作。
考虑将排序调用传递回typeahead库,但开销不值得。希望以上就足够了!