我将Google地方设置为自动填写表单输入。我现在需要某种验证。我已经决定最好的方法是不允许输入任何不在建议列表中的文本。如何修改下面的工作指令呢?如果文本输入与有效建议不匹配,我希望文本输入清除,模型设置为''。
Angular指令:
.directive('googlelocation', function () {
return {
require: 'ngModel',
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.$apply(function () {
model.$setViewValue(element.val());
});
});
}
};
});
供参考
HTML:
<input class="pb-input" id="plocation" name="plocation" type="text" autocomplete="on" ng-model="formData.PLocation" googlelocation ng-required="true" >
脚本参考
<script src="//maps.googleapis.com/maps/api/js?sensor=false&libraries=places" type="text/javascript"></script>
答案 0 :(得分:0)
尝试将place_changed
侦听器更改为:
google.maps.event.addListener(scope.gPlace, 'place_changed',
function () {
scope.$apply(function () {
var place = scope.gPlace.getPlace();
if (!place.geometry) {
element.val('');
} else {
model.$setViewValue(element.val());
}
});
});