mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-17 07:40:22 +00:00
parent
1d8e11ddfb
commit
9956baedd7
3 changed files with 56 additions and 10 deletions
|
|
@ -272,14 +272,17 @@ var $AnimatorProvider = function() {
|
|||
|
||||
var durationKey = 'Duration';
|
||||
var duration = 0;
|
||||
|
||||
//we want all the styles defined before and after
|
||||
forEach(element, function(element) {
|
||||
var globalStyles = $window.getComputedStyle(element) || {};
|
||||
duration = Math.max(
|
||||
parseFloat(globalStyles[w3cTransitionProp + durationKey]) ||
|
||||
parseFloat(globalStyles[vendorTransitionProp + durationKey]) ||
|
||||
0,
|
||||
duration);
|
||||
if (element.nodeType == 1) {
|
||||
var globalStyles = $window.getComputedStyle(element) || {};
|
||||
duration = Math.max(
|
||||
parseFloat(globalStyles[w3cTransitionProp + durationKey]) ||
|
||||
parseFloat(globalStyles[vendorTransitionProp + durationKey]) ||
|
||||
0,
|
||||
duration);
|
||||
}
|
||||
});
|
||||
$window.setTimeout(done, duration * 1000);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -194,9 +194,10 @@ var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$c
|
|||
|
||||
if (template) {
|
||||
clearContent();
|
||||
animate.enter(jqLite('<div></div>').html(template).contents(), element);
|
||||
var enterElements = jqLite('<div></div>').html(template).contents();
|
||||
animate.enter(enterElements, element);
|
||||
|
||||
var link = $compile(element.contents()),
|
||||
var link = $compile(enterElements),
|
||||
current = $route.current,
|
||||
controller;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@
|
|||
describe('ngView', function() {
|
||||
var element;
|
||||
|
||||
beforeEach(module(function() {
|
||||
beforeEach(module(function($provide) {
|
||||
$provide.value('$window', angular.mock.createMockWindow());
|
||||
return function($rootScope, $compile, $animator) {
|
||||
element = $compile('<ng:view onload="load()"></ng:view>')($rootScope);
|
||||
$animator.enabled(true);
|
||||
|
|
@ -621,5 +622,46 @@ describe('ngView', function() {
|
|||
}
|
||||
}));
|
||||
|
||||
|
||||
it('should not double compile when route changes', function() {
|
||||
module(function($routeProvider, $animationProvider, $provide) {
|
||||
$routeProvider.when('/foo', {template: '<div ng-repeat="i in [1,2]">{{i}}</div>'});
|
||||
$routeProvider.when('/bar', {template: '<div ng-repeat="i in [3,4]">{{i}}</div>'});
|
||||
$animationProvider.register('my-animation-leave', function() {
|
||||
return {
|
||||
start: function(element, done) {
|
||||
done();
|
||||
}
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
inject(function($rootScope, $compile, $location, $route, $window, $rootElement, $sniffer) {
|
||||
element = $compile(html('<ng:view onload="load()" ng-animate="\'my-animation\'"></ng:view>'))($rootScope);
|
||||
|
||||
$location.path('/foo');
|
||||
$rootScope.$digest();
|
||||
if ($sniffer.supportsTransitions) {
|
||||
$window.setTimeout.expect(1).process();
|
||||
$window.setTimeout.expect(0).process();
|
||||
}
|
||||
expect(element.text()).toEqual('12');
|
||||
|
||||
$location.path('/bar');
|
||||
$rootScope.$digest();
|
||||
expect(n(element.text())).toEqual('1234');
|
||||
if ($sniffer.supportsTransitions) {
|
||||
$window.setTimeout.expect(1).process();
|
||||
$window.setTimeout.expect(1).process();
|
||||
} else {
|
||||
$window.setTimeout.expect(1).process();
|
||||
}
|
||||
expect(element.text()).toEqual('34');
|
||||
|
||||
function n(text) {
|
||||
return text.replace(/\r\n/m, '').replace(/\r\n/m, '');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue