|
1 | 1 | /*! |
2 | 2 | * angular-ui-scroll |
3 | 3 | * https://github.com/angular-ui/ui-scroll.git |
4 | | - * Version: 1.5.1 -- 2016-07-08T21:21:05.311Z |
| 4 | + * Version: 1.5.1 -- 2016-08-10T12:02:43.502Z |
5 | 5 | * License: MIT |
6 | 6 | */ |
7 | 7 |
|
@@ -209,9 +209,7 @@ angular.module('ui.scroll', []).directive('uiScrollViewport', function () { |
209 | 209 | return buffer; |
210 | 210 | } |
211 | 211 |
|
212 | | - function Viewport(buffer, element, viewportController, attrs) { |
213 | | - var PADDING_MIN = 0.3; |
214 | | - var PADDING_DEFAULT = 0.5; |
| 212 | + function Viewport(buffer, element, viewportController, padding) { |
215 | 213 | var topPadding = undefined; |
216 | 214 | var bottomPadding = undefined; |
217 | 215 | var viewport = viewportController && viewportController.viewport ? viewportController.viewport : angular.element(window); |
@@ -269,7 +267,7 @@ angular.module('ui.scroll', []).directive('uiScrollViewport', function () { |
269 | 267 | } |
270 | 268 |
|
271 | 269 | function bufferPadding() { |
272 | | - return viewport.outerHeight() * Math.max(PADDING_MIN, +attrs.padding || PADDING_DEFAULT); // some extra space to initiate preload |
| 270 | + return viewport.outerHeight() * padding; // some extra space to initiate preload |
273 | 271 | } |
274 | 272 |
|
275 | 273 | angular.extend(viewport, { |
@@ -574,18 +572,28 @@ angular.module('ui.scroll', []).directive('uiScrollViewport', function () { |
574 | 572 |
|
575 | 573 | if (!match) throw new Error('Expected uiScroll in form of \'_item_ in _datasource_\' but got \'' + $attr.uiScroll + '\''); |
576 | 574 |
|
| 575 | + function parseNumericAttr(value, defaultValue) { |
| 576 | + var result = $parse(value)($scope); |
| 577 | + return isNaN(result) ? defaultValue : result; |
| 578 | + } |
| 579 | + |
| 580 | + var BUFFER_MIN = 3; |
| 581 | + var BUFFER_DEFAULT = 10; |
| 582 | + var PADDING_MIN = 0.3; |
| 583 | + var PADDING_DEFAULT = 0.5; |
| 584 | + |
577 | 585 | var datasource = null; |
578 | 586 | var itemName = match[1]; |
579 | 587 | var datasourceName = match[2]; |
580 | | - var bufferSize = Math.max(3, +$attr.bufferSize || 10); |
581 | 588 | var viewportController = controllers[0]; |
582 | | - var startIndex = parseInt($attr.startIndex, 10); |
583 | | - startIndex = isNaN(startIndex) ? 1 : startIndex; |
| 589 | + var bufferSize = Math.max(BUFFER_MIN, parseNumericAttr($attr.bufferSize, BUFFER_DEFAULT)); |
| 590 | + var padding = Math.max(PADDING_MIN, parseNumericAttr($attr.padding, PADDING_DEFAULT)); |
| 591 | + var startIndex = parseNumericAttr($attr.startIndex, 1); |
584 | 592 | var ridActual = 0; // current data revision id |
585 | 593 | var pending = []; |
586 | 594 |
|
587 | 595 | var buffer = new Buffer(bufferSize); |
588 | | - var viewport = new Viewport(buffer, element, viewportController, $attr); |
| 596 | + var viewport = new Viewport(buffer, element, viewportController, padding); |
589 | 597 | var adapter = new Adapter($attr, viewport, buffer, adjustBuffer); |
590 | 598 | if (viewportController) viewportController.adapter = adapter; |
591 | 599 |
|
|
0 commit comments