Typeahead result formatting

萝らか妹 提交于 2020-01-05 08:29:46

问题


Trying to use Typeahead and struggling with JSON formatting (which I have no control over).

{ name="Long Island", type="2", id="1234"}

Here is my JS

$autocomplete.typeahead({
name: 'location',
remote: {
    url: 'http://pathtomysite.com/%QUERY?',
    dataType: 'jsonp',
    filter: function (parsedResponse) {
        console.log(parsedResponse);
        return parsedResponse;
    }
},
template: [
    '<p class="repo-name">{{name}}</p>',
    '<p class="repo-description">{{id}}</p>'
].join(''),
engine: Hogan

});

So the request works and it returns objects in the console, but the typeahead visual dropdown just says 'undefined'.

So I am guessing I need to do something with datums?

I've tried using Hogan templating but nothing is appearing in the drop down.

Not sure if JSONP is this issue? The request has a load of characters prepended, see the JS tab http://jsbin.com/aPOZohi/1/edit

So yeah, where am I going wrong?

Once I get it returning data, I have another formatting question for you :)


回答1:


@Xeevis's answer is almost correct.

First: the "many characters prepended" are jQuery's way of doing JSONP internally when doing cross-domain request.

Second: Xeevis is right, the problem is valueKey, but not only valueKey. The response has to be an array of object, each containing a member by the name specified by valueKey. So set valueKey to "name", but also return an array:

filter: function (parsedResponse) {
    console.log(parsedResponse);
    return parsedResponse.locations;
}



回答2:


Typeahead is by default expecting "value" in datum. Change valueKey to "name".

$autocomplete.typeahead({
    valueKey: 'name',
    name: 'location',
    remote: { ... }
});


来源:https://stackoverflow.com/questions/19704700/typeahead-result-formatting

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!