2016-09-01 11 views
1

Google Maps APIオートコンプリートの動的に作成されたpac-container divへのクリックイベントの伝播を止めようとしています。同様の質問が既に出されていますが、答えがうまくいかない google places api autocomplete - adding click eventGoogle Maps APIオートコンプリートのpac-container divのクリックイベント

解決策は、クリックイベントがオートコンプリートによってキャンセルされ、代わりにmousedownイベントを使用することです。それは技術的にはうまくいっていましたが、ドキュメントの出来事をクリックからマウスに変更する必要がありました。これは私がしたくない犠牲です。

私はGoogleマップのAPIイベントを調べましたが、オートコンプリートは 'place_changed'イベントのみを送信します。以下のpac-container divでの伝播を停止する私のコード。

var pacContainers = document.getElementsByClassName("pac-container"); 

angular.forEach(pacContainers, function(value, key) { 

    // the click event is cancelled by the Autocomplete instance   
    angular.element(value).on('click', function($event) { 

     $event.stopPropagation(); 

    }); 

}); 

答えて

0

あなたが角度を使用しているので、あなたがpacContainerという名前のディレクティブを作成し、要素のリンクまたはコントローラのいずれかのためにあなたのforEach内のコードを実行し、それがのstopPropagation上でのクリックイベントハンドラをバインドしますすることができます作成されたpacコンテナ要素。

+0

Googleマップのpac-container divでpacContainerディレクティブをインスタンス化するにはどうすればよいですか?彼らは角の外側から追加されているので、角は$ compileでそれらについて知りません。 –

+0

また、pacContainerディレクティブをインスタンス化できた場合、Googleマップのオートコンプリートが「キャンセル」している同じクリックイベントを操作しようとしていませんか? –

+0

もちろん、良い点。同じ問題があります。私は、推奨される解決策で別の回答を追加します。 –

0

間隔やタイムアウトを使用しないで同様の問題が解決され、代わりにng-focusを使用して要素が準備されていることを示します。

は、PAC-コンテナはそれがフォーカスを受け取った時の用意ができているだろう、とあなたはクリックハンドラを添付することができます知っているときそれはだhttps://github.com/driftyco/ionic/issues/1798#issuecomment-95943955

を参照してください。

+0

提案していただきありがとうございます。これは、私がAngularを使用しているのでsetIntervalを使用するための良い選択肢ですが、私が求めていた質問はclickイベントでした。私はまだ同じクリックイベントの問題が残っています。 –

+0

こんにちは@DanRichfieldこの問題の解決策を見つけましたか?問題を解決するためにあなたの助けが必要な場合があります。 – CrazyGeek

+0

@CrazyGeek私は弾丸をちょうど打ち、mousedownイベントを使用しました。すべてがうまくいっています。 –