0

我正在使用在这里找到的修改后的 Twitter Bootstrap 预输入。

https://gist.github.com/2935906

我不明白为什么下面的代码不起作用。如果我使用 testArr 它工作正常,但是一旦我返回我从一些谷歌地图代码创建的 resultsArr 它就会失败。console.log(resultsArr) 表明一切都很好。想法?

var testArr=new Array("One","Two","Three");

$('#map-query').typeahead({
    source: function(typeahead, query) {

        var resultsArr = new Array();

        geocoder.geocode({ 'address': query }, function (results, status) {

              for(i=0; i < results.length; i++) {
                  if(results[i].formatted_address) {
                        resultsArr[i] = results[i].formatted_address;    
                  }
              }

              console.log(resultsArr);


              return resultsArr;

      });

    },
    items: 10
});
4

1 回答 1

0

我终于想通了。由于请求未完成,因此返回无效。我用于此的 gist 补丁也可以在这里找到。我不确定这是否是最好的方法,因此欢迎提出改进建议。

https://gist.github.com/1866577

$('#map-query').typeahead({
    source: function(typeahead, query) {

        var resultsArr = new Array();

          geocoder.geocode({ 'address': query }, function (results, status) {

              if (status == google.maps.GeocoderStatus.OK) {
                for(i=0; i < results.length; i++) {
                    if(results[i].formatted_address) {
                        resultsArr[i] = results[i].formatted_address;    
                  }
              }
            typeahead.process(resultsArr);
            }

      });

    },
    items: 10
});
于 2012-07-24T01:36:19.890 回答