1

次のディレクティブで Google Places オートコンプリートを使用しています。ディレクティブは正常に機能しますが、オートコンプリート フィールドをクリアすると、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());
              });

          });
      }
  };
});
4

1 に答える 1

0

Google マップのドキュメントには、「場所情報の取得」( https://developers.google.com/maps/documentation/javascript/places )について記載されています。

「ユーザーがテキスト フィールドに添付された予測から Place を選択すると、サービスは place_changed イベントを発生させます。Places サービスは、Autocomplete オブジェクトで getPlace() を呼び出すことによってアクセスできる PlaceResult オブジェクトも返します。」

したがって、ユーザーが入力ボックスをクリアすると、空白であるため予測が返され、そのイベントは呼び出されないことがわかりました。

DOM から値を読み取りたい場合は、関数を実装し、ngModelController変数の $parsers 配列に追加する必要があります。model

于 2013-08-05T10:34:37.147 に答える