1

静的配列をソースとして指定した場合、先行入力は機能しますが、関数を使用して配列を生成しようとすると、ドロップダウンリストに入力されません。

$("#mix-artist" ).typeahead({
        source: function(query, process) {
            Mix.searchArtist(query);
        },          
        minLength: 3,
    });

ソースの関数:

searchArtist: function(query) {
    $.get(API_MAIN_URL, {a: "search.artists", q: query}, 
        function(data) {
            artists = [];
            query = query.toLowerCase();
            if (data['aData']) {
                for (var i = 0; i <= data['aData'].length; i++) {
                    if (data['aData'][i] && data['aData'][i]['sName'].toLowerCase().indexOf(query) == 0) {
                        artists.push(data['aData'][i]['sName']);
                    }
                }
            }
            console.log(artists);
            return artists;
        });
}

ソース関数の出力例:

["Arcangel", "Arc Angels", "Arcade Fire", "Arctic Monkeys", "Archers of Loaf", "Architecture in Helsinki", "Archie Shepp", "Arcade", "Arch Enemy", "Arcadia", "Archie Eversole"]

この配列を受け入れるために先行入力を取得するにはどうすればよいですか?

4

1 に答える 1

2

コールバックsearchArtistを受け取るには関数が必要です。process配列を返す代わりに、を呼び出す必要がありますprocess(artists)

于 2012-12-11T22:35:38.357 に答える