AngularJS谷歌放置自动完成清除字段

时间:2013-08-05 09:35:34

标签: angularjs google-places-api

我使用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());
              });

          });
      }
  };
});

1 个答案:

答案 0 :(得分:0)

Google地图文档说明了“获取地点信息”(https://developers.google.com/maps/documentation/javascript/places):

“当用户从附加到文本字段的预测中选择一个Place时,该服务会触发place_changed事件.Place服务还会返回一个PlaceResult对象,可以通过调用Autocomplete对象上的getPlace()来访问该对象。”

所以我理解如果用户清除输入框,那么返回任何预测,因为它是空白的,不会调用该事件。

如果您想从DOM中读取值,那么您应该实现一个函数并将其添加到ngModelController变量的$ parsers数组中,在您的情况下,名为model