feat(noConflict): restore previous angular namespace reference

This commit is contained in:
James Morrin 2012-11-06 17:35:47 -05:00 committed by Misko Hevery
parent b7e1fb0515
commit 12ba6cec4f
3 changed files with 45 additions and 1 deletions

View file

@ -57,12 +57,32 @@ var /** holds major version number for IE or NaN for real browsers */
push = [].push,
toString = Object.prototype.toString,
_angular = window.angular,
/** @name angular */
angular = window.angular || (window.angular = {}),
angularModule,
nodeName_,
uid = ['0', '0', '0'];
/**
* @ngdoc function
* @name angular.noConflict
* @function
*
* @description
* Restores the previous global value of angular and returns the current instance. Other libraries may already use the
* angular namespace. Or a previous version of angular is already loaded on the page. In these cases you may want to
* restore the previous namespace and keep a reference to angular.
*
* @return {Object} The current angular namespace
*/
function noConflict() {
var a = window.angular;
window.angular = _angular;
return a;
}
/**
* @ngdoc function
* @name angular.forEach

View file

@ -48,7 +48,8 @@ function publishExternalAPI(angular){
'isDate': isDate,
'lowercase': lowercase,
'uppercase': uppercase,
'callbacks': {counter: 0}
'callbacks': {counter: 0},
'noConflict': noConflict
});
angularModule = setupModuleLoader(window);

View file

@ -737,4 +737,27 @@ describe('angular', function() {
expect(toJson({key: $rootScope})).toEqual('{"key":"$SCOPE"}');
}));
});
describe('noConflict', function() {
var globalAngular;
beforeEach(function() {
globalAngular = angular;
});
afterEach(function() {
angular = globalAngular;
});
it('should return angular', function() {
var a = angular.noConflict();
expect(a).toBe(globalAngular);
});
it('should restore original angular', function() {
var a = angular.noConflict();
expect(angular).toBeUndefined();
});
});
});