将Google地方条目限制为AngularJS中的建议列表

时间:2015-04-30 01:30:23

标签: javascript angularjs google-maps google-maps-api-3

我将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&amp;libraries=places" type="text/javascript"></script>

1 个答案:

答案 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());
                        }
                    });
                });