無論我使用以下單張指令,我的Angular應用程序中都有明顯的內存泄漏:https://github.com/tombatossals/angular-leaflet-directive。AngularJS單張內存泄漏
請注意,該指令工作正常,但內存佔用繼續增長,因爲我離開並返回到使用該指令的任何視圖。
該指令建立關閉JavaScript庫,發現這裏的傳單:https://github.com/Leaflet/Leaflet
我用的指令,如下所示:
<div ng-controller="Explore">
<div leaflet defaults="defaults" center="center" markers="markers" layers="layers"></div>
</div>
在我的控制我延長傳單指令屬性範圍:
angular.extend($scope, {
defaults: {
dragging: true,
doubleClickZoom: false,
scrollWheelZoom: false,
maxZoom: 12,
minZoom: 12
},
center: {
lat: $scope.cities[$scope.market.city][1],
lng: $scope.cities[$scope.market.city][0],
zoom: 12
},
markers: {},
layers: {
baselayers: {
google: {
name: 'Google Streets',
layerType: 'ROADMAP',
type: 'google'
}
}
}
});
我不確定是什麼導致內存泄漏,但我相信它可能與事件偵聽器不會被刪除時$破壞爲瓣葉指令中稱爲:
scope.$on('$destroy', function() {
leafletData.unresolveMap(attrs.id);
});
在破壞功能unresolveMap叫:
this.unresolveMap = function (scopeId) {
var id = leafletHelpers.obtainEffectiveMapId(maps, scopeId);
maps[id] = undefined;
};
這是據我得到了。如果有人遇到過類似的問題或者對如何進一步攻擊這個問題有任何想法,我將不勝感激:)
我剛纔也注意到了這一點,並想知道你是否有任何進展確定泄漏發生在哪裏? – BrokenRobot
你有沒有解決這個問題? – Lugaru