【发布时间】:2013-12-15 07:53:29
【问题描述】:
我最初使用 ng-hide 隐藏地图。当 ng-hide-expression 计算结果为 true 时,地图未正确显示。它仅部分显示,拖动时的行为也很奇怪。 当我删除 ng-show 属性时,地图会正确显示。
HTML:
<div ng-controller="MapCtrl">
<button ng-click="showMap()">Show map</button>
<div ng-show="showMapVar">
<div ng-repeat="marker in myMarkers" ui-map-marker="myMarkers[$index]"
ui-event="{}">
</div>
<div id="map_canvas" ui-map="myMap" style="height:200px;width:300px"
ui-event="{}" ui-options="mapOptions">
</div>
</div>
</div>
Javascript:
angular.module('doc.ui-map', ['ui.map'])
.controller('MapCtrl', ['$scope', function ($scope) {
$scope.myMarkers = [];
$scope.mapOptions = {
center: new google.maps.LatLng(35.784, -78.670),
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
$scope.showMap = function(){
$scope.showMapVar = true;
}
}]) ;
【问题讨论】:
-
我自己没有使用过
ui-map,但我怀疑问题出在显示地图时元素的width/height计算不正确。尝试使用ng-if(在 Angular 1.2 上)或ng-switch(在旧版本上)来完全删除并重新创建 DOM,看看它是否能解决问题。 -
谢谢你,musicly_ut,使用 ng-if 做到了。
-
看来答案解决了问题。请将其标记为已接受,以便其他用户更清楚。 :)
标签: angularjs angular-ui