我已经花了几个小时来弄清楚为什么那个简单的自动完成功能没有显示出来。
原来在我的代码中,输入元素被设置为autocompete="off"
,而pac-container上的样式为display: none
。
我可以在DevTools中更改这些值,然后它就可以正常工作,但我无法弄清楚为什么或如何将这些值设置为这些值。
我的自动完成是在Angular指令中设置的,像这样,其中loadGmaps获取google api。
template: '<input id="google_places_ac" name="google_places_ac" type="text" class="input-block-level"/>', link: function($scope, elm, attrs){ loadGmaps().then(function(){
var autocomplete = new google.maps.places.Autocomplete($("#google_places_ac")[0], {}); console.log(autocomplete); google.maps.event.addListener(autocomplete, 'place_changed', function() { var place = autocomplete.getPlace(); $scope.position = { lat: place.geometry.location.lat(), lon: place.geometry.location.lng() }; $scope.$apply(); }); });
---------------------更新----------------------------------------------
希望没有人会被这个autocomplete="off"
误导。即使使用autocomplete="off"
,自动完成仍然有效,所以这不是问题所在。我正在覆盖.pac-container
元素的CSS,该元素保存结果,如下所示:
.pac-container { //this is a fix for google autocomplete not showing up z-index: 10000 !important; display: block !important; }
这个问题在于一旦从自动完成中选择了一个项目,自动完成仍然可见,我相信有更好的方法来使用自动完成。
.pac-container { z-index: 10000 !important; }
对我很有用! - Vince Lowe