2016-08-04 8 views
0

私は場所を埋めるためにgoogle-placeディレクティブを使用しています。それはオートコンプリートの結果を示していない。すなわち、google-place autocomplete指令は、1つのページで2回使用されても機能しません。

app.directive('googlePlaces', function(){ 
 
    return { 
 
    restrict:'E', 
 
    replace:true, 
 
    scope: {location:'='}, 
 
    template: '<input id="google_places_ac" name="google_places_ac" type="text" class="form-control area_input transition" />', 
 
     link: function($scope, elm, attrs){ 
 
       if(attrs.city =='cities'){ 
 
       var options = { 
 
        types: ['(cities)'], 
 
        componentRestrictions: {country: 'IN'} 
 
       } 
 
       } 
 
       else{ 
 
       var options = { 
 
        componentRestrictions: {country: 'IN'} 
 
       } 
 
       } 
 
       var autocomplete = new google.maps.places.Autocomplete($("#google_places_ac")[0], options); 
 

 
       google.maps.event.addListener(autocomplete, 'place_changed', function() { 
 
       
 
       var place = autocomplete.getPlace(); 
 
       if(attrs.city =='cities'){ 
 
        $scope.location = $("#google_places_ac")[0].value + '"' +place.geometry.location.lat() + '"' + place.geometry.location.lng(); 
 
       } 
 
       else{ 
 
        $scope.location = place.geometry.location.lat() + ',' + place.geometry.location.lng(); 
 
       } 
 
       $scope.$apply(); 
 
       }); 
 
     } 
 
    }; 
 
});
<google-places class="form-control location_field" location="location" city='cities' latlngs = "latlngs" ng-model="chosenPlace"></google-places>

しかし、私は、単一のページ上でそれを2回使用する必要があるため、第二指令は動作しません:私は使用していますディレクティブは、後述されます。 誰でもこの問題を解決するのに手伝ってください。ヘルプは非常に高く評価されます。

+0

私はangularjについてあまりよく知られていませんが、 'autocomplete1'や' autocomplete2'のような2つの変数IDを作成してみることができます。これにより、他のオートプレインインスタンスを上書きすることなく、複数のオートコンプリートを初期化することができます。実装については、SO [20416058](http://stackoverflow.com/a/20416328/5995040)を参照してください。より動的な例については、try [this](http://stackoverflow.com/a/28027112/5995040)を参照してください。 –

答えて

0

お返事ありがとうございます。id(#google_places_ac)を 'elm [0]'に置き換えて問題を解決しました。ここで 'ele'はリンク関数で渡された要素パラメータで、現在の素子。

関連する問題