mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
fix(scrollview, content): Fixed multiple memory leaks in scrollview and content
This commit is contained in:
committed by
Perry Govier
parent
d3c8a1b2a4
commit
f89f010cce
38
js/angular/controller/scrollController.js
vendored
38
js/angular/controller/scrollController.js
vendored
@@ -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; }
|
||||
|
||||
Reference in New Issue
Block a user