我使用邮政编码API作为自动填充搜索的来源,但我无法显示返回的数据。此API已打开,数据在函数内返回,但不在我的html上。
我可能会尝试通过labelProp: $data
显示错误的数据,但我尝试的任何内容都失败了。
如果我将自动完成的source: getPostcodes
更改为其中包含数据的其他数组,但使用getPostcodes
函数则会失败。
从服务返回的用于搜索“CV5”的数据是:
{"status":200,"result":["CV5 6AA","CV5 6AB","CV5 6AD","CV5 6AE","CV5 6AF","CV5 6AG","CV5 6AH","CV5 6AJ","CV5 6AL","CV5 6AN"]}
我正在使用此库进行自动完成: https://github.com/rniemeyer/knockout-jqAutocomplete
我不确定'回调'是否正常工作,因为此代码始终为空:
<div data-bind="text: ko.toJSON(getPostcodes)"></div>
任何想法??
我的模特:
var postcode = ko.observable('');
var getPostcodes = function(searchTerm, callback) {
$.ajax({
dataType: "json",
url: "http://api.postcodes.io/postcodes/" + searchTerm + "/autocomplete",
data: { query: searchTerm },
}).done(callback);
}
我的HTML:
<input data-bind="jqAuto: { value: postcode, source: getPostcodes, labelProp: $data, valueProp: $data}" />
答案 0 :(得分:1)
结果需要格式化并存储在回调中,例如:
}).done(function (data) {
if (data) {
var formatteddata = [];
for (var i = 0; i < data.result.length; i++) {
var item = data.result[i];
formatteddata.push({ 'label': item, 'value': item });
}
callback(formatteddata);
//return formatteddata;
}
});