mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-05-15 18:23:09 +00:00
fix(bootstrap-prettify): share $animate and $$postDigestQueue with demo apps
Although demo apps run in an isolated environment, we need to be able to tell them to disable animations when we are running end-to-end tests. By sharing the same instance of $animate between the two environments we can disable animation across the board. The $animate service uses the $$postDigestQueue to run animations. The outer $animate service uses the outer $$postDigestQueue and to queue up these animations. This means that when we run a digest inside the embedded scope, the animations are never performed - they just sit in the outer scope's queue and are only run when a digest is run on the outer scope. By sharing this queue across the two scopes the animations are performed correctly.
This commit is contained in:
parent
27e9340b3c
commit
1df3da361d
1 changed files with 7 additions and 1 deletions
|
|
@ -192,7 +192,7 @@ directive.ngEvalJavascript = ['getEmbeddedTemplate', function(getEmbeddedTemplat
|
||||||
|
|
||||||
|
|
||||||
directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', '$sniffer', '$animate',
|
directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', '$sniffer', '$animate',
|
||||||
function($templateCache, $browser, docsRootScope, $location, $sniffer, $animate) {
|
function($templateCache, $browser, docsRootScope, $location, $sniffer, $animate) {
|
||||||
return {
|
return {
|
||||||
terminal: true,
|
terminal: true,
|
||||||
link: function(scope, element, attrs) {
|
link: function(scope, element, attrs) {
|
||||||
|
|
@ -205,6 +205,7 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location',
|
||||||
$provide.value('$anchorScroll', angular.noop);
|
$provide.value('$anchorScroll', angular.noop);
|
||||||
$provide.value('$browser', $browser);
|
$provide.value('$browser', $browser);
|
||||||
$provide.value('$sniffer', $sniffer);
|
$provide.value('$sniffer', $sniffer);
|
||||||
|
$provide.value('$animate', $animate);
|
||||||
$provide.provider('$location', function() {
|
$provide.provider('$location', function() {
|
||||||
this.$get = ['$rootScope', function($rootScope) {
|
this.$get = ['$rootScope', function($rootScope) {
|
||||||
docsRootScope.$on('$locationChangeSuccess', function(event, oldUrl, newUrl) {
|
docsRootScope.$on('$locationChangeSuccess', function(event, oldUrl, newUrl) {
|
||||||
|
|
@ -227,6 +228,11 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location',
|
||||||
}]);
|
}]);
|
||||||
$provide.decorator('$rootScope', ['$delegate', function($delegate) {
|
$provide.decorator('$rootScope', ['$delegate', function($delegate) {
|
||||||
embedRootScope = $delegate;
|
embedRootScope = $delegate;
|
||||||
|
|
||||||
|
// Since we are teleporting the $animate service, which relies on the $$postDigestQueue
|
||||||
|
// we need the embedded scope to use the same $$postDigestQueue as the outer scope
|
||||||
|
embedRootScope.$$postDigestQueue = docsRootScope.$$postDigestQueue;
|
||||||
|
|
||||||
deregisterEmbedRootScope = docsRootScope.$watch(function embedRootScopeDigestWatch() {
|
deregisterEmbedRootScope = docsRootScope.$watch(function embedRootScopeDigestWatch() {
|
||||||
embedRootScope.$digest();
|
embedRootScope.$digest();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue