@@ -276,27 +276,31 @@ function($rootScope, $timeout) {
276
276
// Keep rendering items, adding them until we are past the end of the visible scroll area
277
277
i = renderStartIndex ;
278
278
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 ] ) ;
280
290
}
281
- //Add two more items at the end
282
- doRender ( i ++ ) ;
283
- doRender ( i ) ;
284
291
var renderEndIndex = i ;
285
292
286
293
// 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 ) ;
290
297
}
291
298
}
292
299
293
300
this . setCurrentIndex ( startIndex ) ;
294
301
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 ) {
300
304
// do nothing
301
305
} else {
302
306
self . renderItem ( dataIndex , rect . primaryPos - self . beforeSize , rect . secondaryPos ) ;
0 commit comments