邮政编码的自动填充功能不会显示数据

时间:2018-04-19 15:30:24

标签: knockout.js knockout-3.0

我使用邮政编码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}" />

1 个答案:

答案 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;
    }
});