angular-iscroll
angular-iscroll copied to clipboard
Error: that.indicators is undefined
Hi,
I am expiriancing the following problem once I set refreshInterval: 500. Everything works fine ultil I leave the route, the scroller is on ( change route, template and ctrl ).
Then i get the following error messages:
Firefox: "Error: that.indicators is undefined _indicatorsMap@http://ngc:61741/libs/iscroll.js:974:14 IScroll.prototype._initIndicators/<@http://ngc:61741/libs/iscroll.js:1007:4 IScroll.prototype._execEvent@http://ngc:61741/libs/iscroll.js:739:1 IScroll.prototype.refresh@http://ngc:61741/libs/iscroll.js:698:3 _refreshAfterInitialRender@http://ngc:61741/libs/angular-iscroll.js:121:17 timeout/timeoutId<@http://ngc:61741/libs/angular.js:16299:28 completeOutstandingRequest@http://ngc:61741/libs/angular.js:4924:7 Browser/self.defer/timeoutId<@http://ngc:61741/libs/angular.js:5312:7 "
Chrome
TypeError: Cannot read property 'length' of undefined
at _indicatorsMap (iscroll.js:974)
at Object.
Source: https://gist.github.com/Nevergonnachange/7248c6e6d37d9881a3ac
EDIT: Apparently the destruction / deregistration doesnt quite work out well here
angular.forEach(deregistrators, _call);
EDIT:
this is my fix:
line ~170 instance.on('scrollStart', _disableRefresh); instance.on('scrollEnd', _enableRefresh); if (options.directive.refreshInterval !== false) { instance.refreshInterval = $interval(function () { _refreshInstance(); }, options.directive.refreshInterval); }
line ~144 function _destroyInstance() { if (angular.isDefined(scope.iscrollInstance)) { delete scope.iscrollInstance; } $interval.cancel(instance.refreshInterval); instance.destroy();
Hi.
I'm sorry, but I won't have time to look into this immediately. If you could create a working (breaking) example on http://jsfiddle.net/ and share that in this issue thread, that would reduce my work considerably. Could you please do that?
Im curently quite busy with work aswell. But I'll try to set up and example on the weekend if thats of any help for you.
That would be great. It'll be much more precise, and require less questions and guessing.
I'm also getting this issue. Haven't been able to reproduce it consistently though, sorry.
The error occurs in iscroll-probe.js, line 983:
for ( var i = that.indicators.length; i--; ) {
Looking further down at line 1021, I see:
this.on('destroy', function () {
_indicatorsMap(function () {
this.destroy();
});
delete this.indicators;
});
Does angular-iscroll end up trying to destroy the instance twice?