fix(scrollview, content): Fixed multiple memory leaks in scrollview and content

This commit is contained in:
Justin Basinger
2014-08-18 16:22:04 -04:00
committed by Perry Govier
parent d3c8a1b2a4
commit f89f010cce
4 changed files with 53 additions and 21 deletions

View File

@@ -58,28 +58,40 @@ function($scope, scrollViewOptions, $timeout, $window, $$scrollValueCache, $loca
// set by rootScope listener if needed
var backListenDone = angular.noop;
var viewContentLoaded = angular.noop;
$scope.$on('$destroy', function() {
deregisterInstance();
scrollView.__cleanup();
ionic.off('resize', resize, $window);
$window.removeEventListener('resize', resize);
backListenDone();
if (self._rememberScrollId) {
$$scrollValueCache[self._rememberScrollId] = scrollView.getValues();
}
});
$element.on('scroll', function(e) {
var scrollFunc = function(e) {
var detail = (e.originalEvent || e).detail || {};
$scope.$onScroll && $scope.$onScroll({
event: e,
scrollTop: detail.scrollTop || 0,
scrollLeft: detail.scrollLeft || 0
});
};
$element.on('scroll', scrollFunc );
$scope.$on('$destroy', function() {
deregisterInstance();
scrollView.__cleanup();
ionic.off('resize', resize, $window);
$window.removeEventListener('resize', resize);
viewContentLoaded();
backListenDone();
if (self._rememberScrollId) {
$$scrollValueCache[self._rememberScrollId] = scrollView.getValues();
}
scrollViewOptions = null;
self._scrollViewOptions = null;
self.element = null;
$element.off('scroll', scrollFunc);
$element = null;
self.$element = null;
self.scrollView = null;
scrollView = null;
});
$scope.$on('$viewContentLoaded', function(e, historyData) {
viewContentLoaded = $scope.$on('$viewContentLoaded', function(e, historyData) {
//only the top-most scroll area under a view should remember that view's
//scroll position
if (e.defaultPrevented) { return; }