文本输入使用原始类型文本而不是选定的谷歌地方自动填充文本

时间:2014-07-31 18:21:31

标签: html angularjs google-maps-api-3 textbox

我正在使用Google Maps JavaScript API v3在我的角度/节点应用中自动填充文本输入。

我遇到的问题是,出于某种原因,我的角度函数使用的是原始类型文本,而不是填充到文本输入中的所选谷歌地方自动填充文本。

这是发生的事情(在图片中!):

1)输入我正在寻找的地方的开头 enter image description here

2)点击自动填充地点,填写文字输入 enter image description here

3)我在Google Places API调用中使用的字符串是第一步的原始“siz”,而不是自动填充的地方信息,这会返回错误的地方 enter image description here

以下是我认为与此问题相关的代码:

来自main.html:

<form class="form-horizontal" role="form">
<div class="input-group">
  <input ng-model="businessName" googleplace class="form-control input-lg">
  <span class="input-group-btn">
    <button ng-click="findGPlace2()" class="btn btn-default" type="button">Find!</button>
  </span>
</div><!-- /input-group -->

来自Google.js控制器(此示例中console.log($scope.businessName);正在打印siz):

$scope.findGPlace2 = function() {
  console.log($scope.businessName);
  GoogleService.findPlace2($scope.businessName).then(function(data) {
    $scope.gPlace2 = data;
    // for(var i = 0; i < data.results.length; i++) {
    //   console.log(data.results[i]);
    // }
    showGData(data.results[0].place_id);
  });
};

来自App.js(自定义自动完成指令):

  analyticsApp.directive('googleplace', function() {
  return {
    require: 'ngModel',
    link: function(scope, element, attrs, model) {
      var options = {
        types: [],
        componentRestrictions: {}
      };
        scope.gAuto = new google.maps.places.Autocomplete(element[0], options);

        google.maps.event.addListener(scope.gPlace, 'place_changed', function() {
          scope.$apply(function() {
          model.$setViewValue(element.val());                
        });
      });
    }
  };
});

1 个答案:

答案 0 :(得分:2)

您的googleplace指令一定有问题。 检查this fiddile。它可能对你有帮助

 scope.gAuto = new google.maps.places.Autocomplete(element[0], options);

这应该是

 scope.gPlace = new google.maps.places.Autocomplete(element[0], options);

我认为应该这样做。