mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-05-24 13:38:35 +08:00
fix($rootScope): TTL exception does not clear $$phase
When $digest() throws infinite digest exception it does not properly clear the $phase leaving the scope in an inconsistent state. Closes #979
This commit is contained in:
@@ -210,6 +210,8 @@ describe('Scope', function() {
|
||||
'["a; newVal: 98; oldVal: 97","b; newVal: 99; oldVal: 98"],' +
|
||||
'["a; newVal: 99; oldVal: 98","b; newVal: 100; oldVal: 99"],' +
|
||||
'["a; newVal: 100; oldVal: 99","b; newVal: 101; oldVal: 100"]]');
|
||||
|
||||
expect($rootScope.$$phase).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -492,6 +494,27 @@ describe('Scope', function() {
|
||||
});
|
||||
|
||||
|
||||
it('should log exceptions from $digest', function() {
|
||||
module(function($rootScopeProvider, $exceptionHandlerProvider) {
|
||||
$rootScopeProvider.digestTtl(2);
|
||||
$exceptionHandlerProvider.mode('log');
|
||||
});
|
||||
inject(function($rootScope, $exceptionHandler) {
|
||||
$rootScope.$watch('a', function() {$rootScope.b++;});
|
||||
$rootScope.$watch('b', function() {$rootScope.a++;});
|
||||
$rootScope.a = $rootScope.b = 0;
|
||||
|
||||
expect(function() {
|
||||
$rootScope.$apply();
|
||||
}).toThrow();
|
||||
|
||||
expect($exceptionHandler.errors[0]).toBeDefined();
|
||||
|
||||
expect($rootScope.$$phase).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
describe('exceptions', function() {
|
||||
var log;
|
||||
beforeEach(module(function($exceptionHandlerProvider) {
|
||||
|
||||
Reference in New Issue
Block a user