From d3c486dd6dfa8d5dca32a3e28aa685fb7260c878 Mon Sep 17 00:00:00 2001 From: Thomas Guillory Date: Wed, 6 Nov 2013 15:01:10 +0100 Subject: fix($rootScope): clear phase if an exception is raised by a watcher Add calls to clearPhase() when an exception is raised by a watcher while a digest cycle, in order to not be stuck on `$digest` scope phase --- test/ng/rootScopeSpec.js | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'test/ng/rootScopeSpec.js') diff --git a/test/ng/rootScopeSpec.js b/test/ng/rootScopeSpec.js index 894c26d2..69447a3c 100644 --- a/test/ng/rootScopeSpec.js +++ b/test/ng/rootScopeSpec.js @@ -127,6 +127,15 @@ describe('Scope', function() { }); }); + it('should clear phase if an exception interrupt $digest cycle', function() { + inject(function($rootScope) { + $rootScope.$watch('a', function() {throw new Error('abc');}); + $rootScope.a = 1; + try { $rootScope.$digest(); } catch(e) { } + expect($rootScope.$$phase).toBeNull(); + }); + }); + it('should fire watches in order of addition', inject(function($rootScope) { // this is not an external guarantee, just our own sanity -- cgit v1.2.3