Skip to content

Commit d9b3c83

Browse files
committed
count registered instances
1 parent 611d63a commit d9b3c83

File tree

3 files changed

+26
-8
lines changed

3 files changed

+26
-8
lines changed

demo/multipleReloadTest/multipleReload.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="utf-8">
55
<title>Multiple reload test</title>
66
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.js"></script>
7-
<script src="../../src/ui-scroll.js"></script>
7+
<script src="../../dist/ui-scroll.js"></script>
88
<script src="multipleReload.js"></script>
99
<link rel="stylesheet" href="../css/style.css" type="text/css"/>
1010
</head>
@@ -17,12 +17,12 @@
1717
<h1 class="page-header page-header-exapmle">Multiple reload test</h1>
1818

1919
<div class="actions">
20-
<button ng-click="doSingleReload()"> Do single reload</button>
20+
<button ng-click="show = !show"> Do single reload</button>
2121
<button ng-click="doMultipleReload()"> Do multiple reload</button>
2222
Loading: {{adapter.isLoading}}
2323
</div>
2424

25-
<div class="viewport" id="viewport-scopeDatasource" ui-scroll-viewport>
25+
<div class="viewport" id="viewport-scopeDatasource" ui-scroll-viewport ng-if="show">
2626
<div class="item" ui-scroll="item in datasource" adapter="adapter">{{item}}</div>
2727
</div>
2828

src/modules/elementRoutines.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
const hideClassToken = 'ng-ui-scroll-hide';
22

3-
function addCSSRule(sheet, selector, rules, index) {
3+
function addCSSRule(sheet, rules, _index) {
4+
const selector = '.' + hideClassToken;
5+
let index;
6+
try {
7+
index = sheet.cssRules.length;
8+
index = _index < index && _index >= 0 ? _index : index;
9+
} catch (err) {
10+
index = 0;
11+
}
412
if('insertRule' in sheet) {
513
sheet.insertRule(selector + '{' + rules + '}', index);
614
}
@@ -11,11 +19,13 @@ function addCSSRule(sheet, selector, rules, index) {
1119

1220
export default class ElementRoutines {
1321

14-
constructor($injector, $q) {
22+
constructor($injector, $q, uiScrollService) {
1523
this.$animate = ($injector.has && $injector.has('$animate')) ? $injector.get('$animate') : null;
1624
this.isAngularVersionLessThen1_3 = angular.version.major === 1 && angular.version.minor < 3;
1725
this.$q = $q;
18-
addCSSRule(document.styleSheets[0], '.' + hideClassToken, 'display: none');
26+
if (uiScrollService.count() === 1) {
27+
addCSSRule(document.styleSheets[0], 'display: none');
28+
}
1929
}
2030

2131
hideElement(wrapper) {

src/ui-scroll.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ import Adapter from './modules/adapter.js';
66

77
angular.module('ui.scroll', [])
88

9+
.service('uiScrollService', function () {
10+
let instances = 0;
11+
this.register = () => instances++;
12+
this.count = () => instances;
13+
})
914
.constant('JQLiteExtras', JQLiteExtras)
1015
.run(['JQLiteExtras', (JQLiteExtras) =>
1116
!window.jQuery ? (new JQLiteExtras()).registerFor(angular.element) : null
@@ -42,7 +47,8 @@ angular.module('ui.scroll', [])
4247
'$interval',
4348
'$q',
4449
'$parse',
45-
function (console, $injector, $rootScope, $timeout, $interval, $q, $parse) {
50+
'uiScrollService',
51+
function (console, $injector, $rootScope, $timeout, $interval, $q, $parse, uiScrollService) {
4652

4753
return {
4854
require: ['?^uiScrollViewport'],
@@ -59,6 +65,8 @@ angular.module('ui.scroll', [])
5965
throw new Error('Expected uiScroll in form of \'_item_ in _datasource_\' but got \'' + $attr.uiScroll + '\'');
6066
}
6167

68+
uiScrollService.register();
69+
6270
function parseNumericAttr(value, defaultValue) {
6371
const result = $parse(value)($scope);
6472
return isNaN(result) ? defaultValue : result;
@@ -81,7 +89,7 @@ angular.module('ui.scroll', [])
8189
let ridActual = 0; // current data revision id
8290
let pending = [];
8391

84-
const elementRoutines = new ElementRoutines($injector, $q);
92+
const elementRoutines = new ElementRoutines($injector, $q, uiScrollService);
8593
const buffer = new ScrollBuffer(elementRoutines, bufferSize, startIndex);
8694
const viewport = new Viewport(elementRoutines, buffer, element, viewportController, $rootScope, padding);
8795
const adapter = new Adapter($scope, $parse, $attr, viewport, buffer, doAdjust, reload);

0 commit comments

Comments
 (0)