Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS google places自动完成清除字段_Angularjs_Google Places Api - Fatal编程技术网

AngularJS google places自动完成清除字段

AngularJS google places自动完成清除字段,angularjs,google-places-api,Angularjs,Google Places Api,我使用谷歌位置自动完成以下指令。该指令工作正常,但当我清除autocomplete字段时,place\u changed事件不会触发。当用户删除“自动完成”框中的值时,如何确保它触发并清除字段 app.directive('googleplace', function() { return { require: 'ngModel', scope:{place : '='}, link: function(scope, element, attrs, mod

我使用谷歌位置自动完成以下指令。该指令工作正常,但当我清除autocomplete字段时,place\u 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());
              });

          });
      }
  };
});

谷歌地图文档中提到了“获取地点信息”(Getting Place Information)():

当用户从附加到文本字段的预测中选择一个地点时,服务将触发一个地点更改事件。地点服务还返回一个地点结果对象,可通过调用自动完成对象上的getPlace()来访问该对象

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

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