fix($animator): remove dependency on window.setTimeout.

This commit is contained in:
Misko Hevery 2013-04-16 09:53:35 -07:00
parent de296f1b52
commit 021bdf3922
3 changed files with 20 additions and 26 deletions

View file

@ -975,12 +975,13 @@ function bootstrap(element, modules) {
}]);
modules.unshift('ng');
var injector = createInjector(modules);
injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector',
function(scope, element, compile, injector) {
injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector', '$animator',
function(scope, element, compile, injector, animator) {
scope.$apply(function() {
element.data('$injector', injector);
compile(element)(scope);
});
animator.enabled(true);
}]
);
return injector;

View file

@ -130,14 +130,6 @@ var $AnimatorProvider = function() {
this.$get = ['$animation', '$window', '$sniffer', '$rootElement', '$rootScope',
function($animation, $window, $sniffer, $rootElement, $rootScope) {
$rootElement.data(NG_ANIMATE_CONTROLLER, rootAnimateController);
var unregister = $rootScope.$watch(function() {
unregister();
if (rootAnimateController.running) {
$window.setTimeout(function() {
rootAnimateController.running = false;
}, 0);
}
});
/**
* @ngdoc function

View file

@ -28,20 +28,27 @@ describe("$animator", function() {
});
});
it("should disable and enable the animations", inject(function($animator, $rootScope, $window) {
expect($animator.enabled()).toBe(false);
it("should disable and enable the animations", function() {
var initialState = null;
var animator;
$rootScope.$digest();
$window.setTimeout.expect(0).process();
angular.bootstrap(body, [function() {
return function($animator) {
animator = $animator;
initialState = $animator.enabled();
}
}]);
expect($animator.enabled()).toBe(true);
expect(initialState).toBe(false);
expect($animator.enabled(0)).toBe(false);
expect($animator.enabled()).toBe(false);
expect(animator.enabled()).toBe(true);
expect($animator.enabled(1)).toBe(true);
expect($animator.enabled()).toBe(true);
}));
expect(animator.enabled(0)).toBe(false);
expect(animator.enabled()).toBe(false);
expect(animator.enabled(1)).toBe(true);
expect(animator.enabled()).toBe(true);
});
});
@ -145,9 +152,6 @@ describe("$animator", function() {
ngAnimate : '{enter: \'custom\'}'
});
$rootScope.$digest(); // re-enable the animations;
window.setTimeout.expect(0).process();
expect(element.contents().length).toBe(0);
animator.enter(child, element);
window.setTimeout.expect(1).process();
@ -158,9 +162,6 @@ describe("$animator", function() {
ngAnimate : '{leave: \'custom\'}'
});
$rootScope.$digest(); // re-enable the animations;
window.setTimeout.expect(0).process();
element.append(child);
expect(element.contents().length).toBe(1);
animator.leave(child, element);