@@ -394,7 +394,7 @@ function CollectionRepeatDirective($ionicCollectionManager, $parse, $window, $$r
394
394
395
395
RepeatManagerFactory . $inject = [ '$rootScope' , '$window' , '$$rAF' ] ;
396
396
function RepeatManagerFactory ( $rootScope , $window , $$rAF ) {
397
- var EMPTY_DIMENSION = { primaryPos : 0 , secondaryPos : 0 , primarySize : 0 , secondarySize : 0 } ;
397
+ var EMPTY_DIMENSION = { primaryPos : 0 , secondaryPos : 0 , primarySize : 0 , secondarySize : 0 , rowPrimarySize : 0 } ;
398
398
399
399
return function RepeatController ( options ) {
400
400
var afterItemsNode = options . afterItemsNode ;
@@ -482,6 +482,7 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
482
482
scrollView . __$callback = scrollView . __callback ;
483
483
scrollView . __callback = function ( transformLeft , transformTop , zoom , wasResize ) {
484
484
var scrollValue = view . getScrollValue ( ) ;
485
+ if ( window . d ) dump ( '_-callback render' , scrollValue , view . scrollPrimarySize + renderAfterBoundary ) ;
485
486
if ( renderStartIndex === - 1 ||
486
487
scrollValue + view . scrollPrimarySize > renderAfterBoundary ||
487
488
scrollValue < renderBeforeBoundary ) {
@@ -641,6 +642,7 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
641
642
if ( item . secondarySize !== dim . secondarySize || item . primarySize !== dim . primarySize ) {
642
643
item . node . style . cssText = item . node . style . cssText
643
644
. replace ( WIDTH_HEIGHT_REGEX , WIDTH_HEIGHT_TEMPLATE_STR
645
+ //TODO fix item.primarySize + 1 hack
644
646
. replace ( PRIMARY , ( item . primarySize = dim . primarySize ) + 1 )
645
647
. replace ( SECONDARY , ( item . secondarySize = dim . secondarySize ) )
646
648
) ;
@@ -858,14 +860,22 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
858
860
dim . secondaryPos = prevDimension . secondaryPos + prevDimension . secondarySize ;
859
861
860
862
if ( i === 0 || dim . secondaryPos + dim . secondarySize > self . scrollSecondarySize ) {
861
- dim . rowStartIndex = i ;
862
863
dim . secondaryPos = 0 ;
863
864
dim . primarySize = self . getItemPrimarySize ( i , data [ i ] ) ;
864
- dim . primaryPos = prevDimension . primaryPos + prevDimension . primarySize ;
865
+ dim . primaryPos = prevDimension . primaryPos + prevDimension . rowPrimarySize ;
866
+
867
+ dim . rowStartIndex = i ;
868
+ dim . rowPrimarySize = dim . primarySize ;
865
869
} else {
866
- dim . rowStartIndex = prevDimension . rowStartIndex ;
867
- dim . primarySize = prevDimension . primarySize ;
870
+ dim . primarySize = self . getItemPrimarySize ( i , data [ i ] ) ;
868
871
dim . primaryPos = prevDimension . primaryPos ;
872
+ dim . rowStartIndex = prevDimension . rowStartIndex ;
873
+
874
+ dimensions [ dim . rowStartIndex ] . rowPrimarySize = dim . rowPrimarySize = Math . max (
875
+ dimensions [ dim . rowStartIndex ] . rowPrimarySize ,
876
+ dim . primarySize
877
+ ) ;
878
+ dim . rowPrimarySize = Math . max ( dim . primarySize , dim . rowPrimarySize ) ;
869
879
}
870
880
}
871
881
}
@@ -929,7 +939,7 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
929
939
// scrolling down
930
940
} else if ( scrollValue >= oldScrollValue ) {
931
941
for ( i = oldRenderStartIndex , len = data . length ; i < len ; i ++ ) {
932
- if ( ( dim = this . getDimensions ( i ) ) && dim . primaryPos + dim . primarySize >= scrollValue ) {
942
+ if ( ( dim = this . getDimensions ( i ) ) && dim . primaryPos + dim . rowPrimarySize >= scrollValue ) {
933
943
break ;
934
944
}
935
945
}
@@ -950,7 +960,7 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
950
960
// -- Calculate renderEndIndex
951
961
var lastRowDim ;
952
962
for ( i = renderStartIndex + 1 , len = data . length ; i < len ; i ++ ) {
953
- if ( ( dim = this . getDimensions ( i ) ) && dim . primaryPos + dim . primarySize > scrollValueEnd ) {
963
+ if ( ( dim = this . getDimensions ( i ) ) && dim . primaryPos + dim . rowPrimarySize > scrollValueEnd ) {
954
964
955
965
// Go all the way to the end of the row if we're in a grid
956
966
if ( isGridView ) {
@@ -966,7 +976,7 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
966
976
967
977
renderEndIndex = Math . min ( i , data . length - 1 ) ;
968
978
renderAfterBoundary = renderEndIndex !== - 1 ?
969
- ( ( dim = this . getDimensions ( renderEndIndex ) ) . primaryPos + dim . primarySize ) :
979
+ ( ( dim = this . getDimensions ( renderEndIndex ) ) . primaryPos + ( dim . rowPrimarySize || dim . primarySize ) ) :
970
980
- 1 ;
971
981
972
982
oldScrollValue = scrollValue ;
@@ -978,5 +988,3 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
978
988
} ;
979
989
980
990
}
981
-
982
-
0 commit comments