fix(collectionRepeat): rerender when $ionicScrollDelegate resizes

Fixes #1777
This commit is contained in:
Andrew
2014-08-11 10:23:49 -04:00
parent 9a1f3d7e26
commit 5e025fbb01
3 changed files with 18 additions and 4 deletions

View File

@@ -116,7 +116,9 @@ function($scope, scrollViewOptions, $timeout, $window, $$scrollValueCache, $loca
};
this.resize = function() {
return $timeout(resize);
return $timeout(resize).then(function() {
$element.triggerHandler('scroll.resize');
});
};
this.scrollTop = function(shouldAnimate) {

View File

@@ -224,6 +224,7 @@ function($collectionRepeatManager, $collectionDataSource, $parse) {
var beforeSiblings = [];
var afterSiblings = [];
var before = true;
forEach(scrollViewContent.children, function(node, i) {
if ( ionic.DomUtil.elementIsDescendant($element[0], node, scrollViewContent) ) {
before = false;
@@ -248,16 +249,17 @@ function($collectionRepeatManager, $collectionDataSource, $parse) {
dataSource.setData(value, beforeSiblings, afterSiblings);
collectionRepeatManager.resize();
}
function onWindowResize() {
function rerenderOnResize() {
rerender($scope.$eval(listExpr));
}
ionic.on('resize', onWindowResize, window);
scrollCtrl.$element.on('scroll.resize', rerenderOnResize);
ionic.on('resize', rerenderOnResize, window);
$scope.$on('$destroy', function() {
collectionRepeatManager.destroy();
dataSource.destroy();
ionic.off('resize', onWindowResize, window);
ionic.off('resize', rerenderOnResize, window);
});
}
};