我使用google自动完成功能并使用以下指令。该指令工作正常,但是当我清除自动完成字段时,place_changed事件不会触发。当用户删除自动完成框中的值时,我该怎么做才能确保它会触发并清除字段?
app.directive('googleplace', function() {
return {
require: 'ngModel',
scope:{place : '='},
link: function(scope, element, attrs, model) {
var options = {
types: []
};
scope.gPlace = new google.maps.places.Autocomplete(element[0], options);
google.maps.event.addListener(scope.gPlace, 'place_changed', function() {
scope.place = scope.gPlace.getPlace();
scope.$apply(function() {
model.$setViewValue(element.val());
});
});
}
};
});
答案 0 :(得分:0)
Google地图文档说明了“获取地点信息”(https://developers.google.com/maps/documentation/javascript/places):
“当用户从附加到文本字段的预测中选择一个Place时,该服务会触发place_changed事件.Place服务还会返回一个PlaceResult对象,可以通过调用Autocomplete对象上的getPlace()来访问该对象。”
所以我理解如果用户清除输入框,那么返回任何预测,因为它是空白的,不会调用该事件。
如果您想从DOM中读取值,那么您应该实现一个函数并将其添加到ngModelController
变量的$ parsers数组中,在您的情况下,名为model