@@ -276,27 +276,31 @@ function($rootScope, $timeout) {
276276 // Keep rendering items, adding them until we are past the end of the visible scroll area
277277 i = renderStartIndex ;
278278 while ( ( rect = this . dimensions [ i ] ) && ( rect . primaryPos - rect . primarySize < scrollSizeEnd ) ) {
279- doRender ( i ++ ) ;
279+ doRender ( i , rect ) ;
280+ i ++ ;
281+ }
282+
283+ // Render two extra items at the end as a buffer
284+ if ( self . dimensions [ i ] ) {
285+ doRender ( i , self . dimensions [ i ] ) ;
286+ i ++ ;
287+ }
288+ if ( self . dimensions [ i ] ) {
289+ doRender ( i , self . dimensions [ i ] ) ;
280290 }
281- //Add two more items at the end
282- doRender ( i ++ ) ;
283- doRender ( i ) ;
284291 var renderEndIndex = i ;
285292
286293 // Remove any items that were rendered and aren't visible anymore
287- for ( i in this . renderedItems ) {
288- if ( i < renderStartIndex || i > renderEndIndex ) {
289- this . removeItem ( i ) ;
294+ for ( var renderIndex in this . renderedItems ) {
295+ if ( renderIndex < renderStartIndex || renderIndex > renderEndIndex ) {
296+ this . removeItem ( renderIndex ) ;
290297 }
291298 }
292299
293300 this . setCurrentIndex ( startIndex ) ;
294301
295- function doRender ( dataIndex ) {
296- var rect = self . dimensions [ dataIndex ] ;
297- if ( ! rect ) {
298-
299- } else if ( dataIndex < self . dataSource . dataStartIndex ) {
302+ function doRender ( dataIndex , rect ) {
303+ if ( dataIndex < self . dataSource . dataStartIndex ) {
300304 // do nothing
301305 } else {
302306 self . renderItem ( dataIndex , rect . primaryPos - self . beforeSize , rect . secondaryPos ) ;
0 commit comments