mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-16 23:30:23 +00:00
fix($animator): ensure animations are always disabled for an element that is not attached to the DOM
This commit is contained in:
parent
14626d0bc5
commit
031da1f96b
7 changed files with 62 additions and 33 deletions
|
|
@ -91,13 +91,21 @@ describe('Docs Annotations', function() {
|
|||
}
|
||||
});
|
||||
});
|
||||
inject(function($rootScope, $compile, $templateCache) {
|
||||
inject(function($rootScope, $compile, $templateCache, $rootElement, $animator) {
|
||||
$animator.enabled(true);
|
||||
url = '/page.html';
|
||||
$scope = $rootScope.$new();
|
||||
parent = angular.element('<div class="parent"></div>');
|
||||
element = angular.element('<div data-url="' + url + '" foldout></div>');
|
||||
body.append(parent);
|
||||
|
||||
//we're injecting the element to the $rootElement since the changes in
|
||||
//$animator only detect and perform animations if the root element has
|
||||
//animations enabled. If the element is not apart of the DOM
|
||||
//then animations are skipped.
|
||||
parent.append(element);
|
||||
$rootElement.append(parent);
|
||||
body.append($rootElement);
|
||||
|
||||
$compile(parent)($scope);
|
||||
$scope.$apply();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -290,8 +290,9 @@ var $AnimatorProvider = function() {
|
|||
if (!parent) {
|
||||
parent = after ? after.parent() : element.parent();
|
||||
}
|
||||
var disabledAnimation = { running : true };
|
||||
if ((!$sniffer.transitions && !polyfillSetup && !polyfillStart) ||
|
||||
(parent.inheritedData(NG_ANIMATE_CONTROLLER) || noop).running) {
|
||||
(parent.inheritedData(NG_ANIMATE_CONTROLLER) || disabledAnimation).running) {
|
||||
beforeFn(element, parent, after);
|
||||
afterFn(element, parent, after);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -77,18 +77,22 @@ describe('ngIf', function () {
|
|||
|
||||
describe('ngIf ngAnimate', function () {
|
||||
var vendorPrefix, window;
|
||||
var body, element;
|
||||
var body, element, $rootElement;
|
||||
|
||||
function html(html) {
|
||||
body.html(html);
|
||||
element = body.children().eq(0);
|
||||
$rootElement.html(html);
|
||||
element = $rootElement.children().eq(0);
|
||||
return element;
|
||||
}
|
||||
|
||||
beforeEach(function() {
|
||||
beforeEach(module(function() {
|
||||
// we need to run animation on attached elements;
|
||||
body = jqLite(document.body);
|
||||
});
|
||||
return function(_$rootElement_) {
|
||||
$rootElement = _$rootElement_;
|
||||
body = jqLite(document.body);
|
||||
body.append($rootElement);
|
||||
};
|
||||
}));
|
||||
|
||||
afterEach(function(){
|
||||
dealoc(body);
|
||||
|
|
|
|||
|
|
@ -299,11 +299,11 @@ describe('ngInclude', function() {
|
|||
|
||||
describe('ngInclude ngAnimate', function() {
|
||||
var vendorPrefix, window;
|
||||
var body, element;
|
||||
var body, element, $rootElement;
|
||||
|
||||
function html(html) {
|
||||
body.html(html);
|
||||
element = body.children().eq(0);
|
||||
$rootElement.html(html);
|
||||
element = $rootElement.children().eq(0);
|
||||
return element;
|
||||
}
|
||||
|
||||
|
|
@ -312,10 +312,14 @@ describe('ngInclude ngAnimate', function() {
|
|||
element.css(vendorPrefix + cssProp, cssValue);
|
||||
}
|
||||
|
||||
beforeEach(function() {
|
||||
beforeEach(module(function() {
|
||||
// we need to run animation on attached elements;
|
||||
body = jqLite(document.body);
|
||||
});
|
||||
return function(_$rootElement_) {
|
||||
$rootElement = _$rootElement_;
|
||||
body = jqLite(document.body);
|
||||
body.append($rootElement);
|
||||
};
|
||||
}));
|
||||
|
||||
afterEach(function(){
|
||||
dealoc(body);
|
||||
|
|
|
|||
|
|
@ -708,11 +708,11 @@ describe('ngRepeat', function() {
|
|||
|
||||
describe('ngRepeat ngAnimate', function() {
|
||||
var vendorPrefix, window;
|
||||
var body, element;
|
||||
var body, element, $rootElement;
|
||||
|
||||
function html(html) {
|
||||
body.html(html);
|
||||
element = body.children().eq(0);
|
||||
$rootElement.html(html);
|
||||
element = $rootElement.children().eq(0);
|
||||
return element;
|
||||
}
|
||||
|
||||
|
|
@ -721,10 +721,14 @@ describe('ngRepeat ngAnimate', function() {
|
|||
element.css(vendorPrefix + cssProp, cssValue);
|
||||
}
|
||||
|
||||
beforeEach(function() {
|
||||
beforeEach(module(function() {
|
||||
// we need to run animation on attached elements;
|
||||
body = jqLite(document.body);
|
||||
});
|
||||
return function(_$rootElement_) {
|
||||
$rootElement = _$rootElement_;
|
||||
body = jqLite(document.body);
|
||||
body.append($rootElement);
|
||||
};
|
||||
}));
|
||||
|
||||
afterEach(function(){
|
||||
dealoc(body);
|
||||
|
|
|
|||
|
|
@ -216,18 +216,22 @@ describe('ngSwitch', function() {
|
|||
|
||||
describe('ngSwitch ngAnimate', function() {
|
||||
var vendorPrefix, window;
|
||||
var body, element;
|
||||
var body, element, $rootElement;
|
||||
|
||||
function html(html) {
|
||||
body.html(html);
|
||||
element = body.children().eq(0);
|
||||
$rootElement.html(html);
|
||||
element = $rootElement.children().eq(0);
|
||||
return element;
|
||||
}
|
||||
|
||||
beforeEach(function() {
|
||||
beforeEach(module(function() {
|
||||
// we need to run animation on attached elements;
|
||||
body = jqLite(document.body);
|
||||
});
|
||||
return function(_$rootElement_) {
|
||||
$rootElement = _$rootElement_;
|
||||
body = jqLite(document.body);
|
||||
body.append($rootElement);
|
||||
};
|
||||
}));
|
||||
|
||||
afterEach(function(){
|
||||
dealoc(body);
|
||||
|
|
|
|||
|
|
@ -511,11 +511,12 @@ describe('ngView', function() {
|
|||
|
||||
describe('ngAnimate ', function() {
|
||||
var window, vendorPrefix;
|
||||
var body, element;
|
||||
var body, element, $rootElement;
|
||||
|
||||
function html(html) {
|
||||
body.html(html);
|
||||
element = body.children().eq(0);
|
||||
$rootElement.html(html);
|
||||
body.append($rootElement);
|
||||
element = $rootElement.children().eq(0);
|
||||
return element;
|
||||
}
|
||||
|
||||
|
|
@ -524,10 +525,13 @@ describe('ngView', function() {
|
|||
element.css(vendorPrefix + cssProp, cssValue);
|
||||
}
|
||||
|
||||
beforeEach(function() {
|
||||
beforeEach(module(function() {
|
||||
// we need to run animation on attached elements;
|
||||
body = jqLite(document.body);
|
||||
});
|
||||
return function(_$rootElement_) {
|
||||
$rootElement = _$rootElement_;
|
||||
body = jqLite(document.body);
|
||||
};
|
||||
}));
|
||||
|
||||
afterEach(function(){
|
||||
dealoc(body);
|
||||
|
|
|
|||
Loading…
Reference in a new issue