aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Angular.js20
-rw-r--r--src/AngularPublic.js3
-rw-r--r--test/AngularSpec.js23
3 files changed, 45 insertions, 1 deletions
diff --git a/src/Angular.js b/src/Angular.js
index 5195489e..6ea5d1ad 100644
--- a/src/Angular.js
+++ b/src/Angular.js
@@ -57,6 +57,8 @@ 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,
@@ -65,6 +67,24 @@ var /** holds major version number for IE or NaN for real browsers */
/**
* @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
* @function
*
diff --git a/src/AngularPublic.js b/src/AngularPublic.js
index 61c77af3..9928a125 100644
--- a/src/AngularPublic.js
+++ b/src/AngularPublic.js
@@ -48,7 +48,8 @@ function publishExternalAPI(angular){
'isDate': isDate,
'lowercase': lowercase,
'uppercase': uppercase,
- 'callbacks': {counter: 0}
+ 'callbacks': {counter: 0},
+ 'noConflict': noConflict
});
angularModule = setupModuleLoader(window);
diff --git a/test/AngularSpec.js b/test/AngularSpec.js
index e734decf..aed191e7 100644
--- a/test/AngularSpec.js
+++ b/test/AngularSpec.js
@@ -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();
+ });
+
+ });
+
});