注意!
この記事はQiitaにて公開されていた内容をimportしたものです。
これらの内容は場合によっては陳腐化していて役に立たなくなっていたり、有害であったり、現在の著者の主張と異なることがあります。
皆様の判断の上でご利用いただけますと幸いです(度を超してヤバいものは著者に連絡して頂ければ対応します m(_ _)m)
問題
以下のPlunkerのような、タブの中に地図(GoogleMaps)が貼り付けてあるような構成を作りたいとする。
上のサンプルでは、地図が半分以上が描画されていないはずである。これをなんとか解決したい。
FAQに書いてあった
あれこれググったが、AngularGoogleMapsのプロジェクトサイトのFAQに答えが書いてあった。
ざっくり書くと、「ng-show
みたいなのじゃなくてng-if
つかってDOMの削除・挿入を使え」とのこと。
対策
<tab heading="Map(After)" select="ctrl.show = true" deselect="ctrl.show = false">
<div ng-if="ctrl.show">
<h1>Fixed map page</h1>
<ui-gmap-google-map center='ctrl.center' zoom='ctrl.zoom'></ui-gmap-google-map>
</div>
</tab>
UI Bootstrapのtab directiveのselect
およびdeselect
でshowフラグをON/OFFし、
tabの子要素のdivタグのng-if
でDOMの出し入れを行う。
そんな感じで修正しましたが、どうもバッドノウハウな気がしなくもない。。。
余談: controller-asな感じでController定義してるので
ctrl.***
という形になっているが、 controller-asで書いてない($scope
で書いている)ならばctrl.
は削除すること