Skip to content

Commit 340d789

Browse files
committed
attributes scope binding (bufferSize, padding, startIndex)
1 parent c3dfff3 commit 340d789

File tree

3 files changed

+35
-19
lines changed

3 files changed

+35
-19
lines changed

dist/ui-scroll.js

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*!
22
* angular-ui-scroll
33
* 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
55
* License: MIT
66
*/
77

@@ -209,9 +209,7 @@ angular.module('ui.scroll', []).directive('uiScrollViewport', function () {
209209
return buffer;
210210
}
211211

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) {
215213
var topPadding = undefined;
216214
var bottomPadding = undefined;
217215
var viewport = viewportController && viewportController.viewport ? viewportController.viewport : angular.element(window);
@@ -269,7 +267,7 @@ angular.module('ui.scroll', []).directive('uiScrollViewport', function () {
269267
}
270268

271269
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
273271
}
274272

275273
angular.extend(viewport, {
@@ -574,18 +572,28 @@ angular.module('ui.scroll', []).directive('uiScrollViewport', function () {
574572

575573
if (!match) throw new Error('Expected uiScroll in form of \'_item_ in _datasource_\' but got \'' + $attr.uiScroll + '\'');
576574

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+
577585
var datasource = null;
578586
var itemName = match[1];
579587
var datasourceName = match[2];
580-
var bufferSize = Math.max(3, +$attr.bufferSize || 10);
581588
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);
584592
var ridActual = 0; // current data revision id
585593
var pending = [];
586594

587595
var buffer = new Buffer(bufferSize);
588-
var viewport = new Viewport(buffer, element, viewportController, $attr);
596+
var viewport = new Viewport(buffer, element, viewportController, padding);
589597
var adapter = new Adapter($attr, viewport, buffer, adjustBuffer);
590598
if (viewportController) viewportController.adapter = adapter;
591599

0 commit comments

Comments
 (0)