diff --git a/src/directives/controls.js b/src/directives/controls.js index cca2c121..18ae47cc 100644 --- a/src/directives/controls.js +++ b/src/directives/controls.js @@ -19,6 +19,10 @@ angular.module('ui-leaflet').directive('controls', function (leafletLogger, leaf var leafletControls = {}; var errorHeader = leafletHelpers.errorHeader + ' [Controls] '; + scope.$on('$destroy', function () { + leafletControlHelpers.destroyMapLayersControl(scope.mapId); + }); + controller.getMap().then(function(map) { leafletScope.$watchCollection('controls', function(newControls) { diff --git a/src/directives/layers.js b/src/directives/layers.js index cff9b0ee..6ca459b2 100644 --- a/src/directives/layers.js +++ b/src/directives/layers.js @@ -23,6 +23,10 @@ angular.module('ui-leaflet').directive('layers', function (leafletLogger, $q, le updateLayersControl = leafletControlHelpers.updateLayersControl, isLayersControlVisible = false; + scope.$on('$destroy', function () { + leafletControlHelpers.destroyMapLayersControl(scope.mapId); + }); + controller.getMap().then(function(map) { // We have baselayers to add to the map diff --git a/src/services/leafletControlHelpers.js b/src/services/leafletControlHelpers.js index 42e6acc8..44a891ed 100644 --- a/src/services/leafletControlHelpers.js +++ b/src/services/leafletControlHelpers.js @@ -194,6 +194,10 @@ angular.module('ui-leaflet').factory('leafletControlHelpers', function ($rootSco map.addControl(_layersControl); } return mustBeLoaded; + }, + + destroyMapLayersControl: function(mapId) { + delete _controls[mapId]; } }; });