aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Angular.js2
-rw-r--r--src/AngularPublic.js3
-rw-r--r--src/service/httpBackend.js20
3 files changed, 11 insertions, 14 deletions
diff --git a/src/Angular.js b/src/Angular.js
index 9a4470eb..2a9fb556 100644
--- a/src/Angular.js
+++ b/src/Angular.js
@@ -101,8 +101,6 @@ var $$scope = '$scope',
angularWidget = extensionMap(angular, 'widget', shivForIE),
/** @name angular.module.ng */
angularInputType = extensionMap(angular, 'inputType', lowercase),
- /** @name angular.module.ng */
- angularCallbacks = extensionMap(angular, 'callbacks'),
nodeName_,
uid = ['0', '0', '0'],
DATE_ISOSTRING_LN = 24;
diff --git a/src/AngularPublic.js b/src/AngularPublic.js
index e5c70a8b..7664ed8c 100644
--- a/src/AngularPublic.js
+++ b/src/AngularPublic.js
@@ -47,7 +47,8 @@ function publishExternalAPI(angular){
'version': version,
'isDate': isDate,
'lowercase': lowercase,
- 'uppercase': uppercase
+ 'uppercase': uppercase,
+ 'callbacks': {counter: 0}
});
angularModule.ng = ngModule;
diff --git a/src/service/httpBackend.js b/src/service/httpBackend.js
index 7443347f..6ea7df0f 100644
--- a/src/service/httpBackend.js
+++ b/src/service/httpBackend.js
@@ -17,31 +17,29 @@ var XHR = window.XMLHttpRequest || function() {
*/
function $HttpBackendProvider() {
this.$get = ['$browser', '$window', '$document', function($browser, $window, $document) {
- return createHttpBackend($browser, XHR, $browser.defer, $window, $document[0].body,
- $window.location.href.replace(':', ''));
+ return createHttpBackend($browser, XHR, $browser.defer, $window.angular.callbacks,
+ $document[0].body, $window.location.href.replace(':', ''));
}];
}
-function createHttpBackend($browser, XHR, $browserDefer, $window, body, locationProtocol) {
- var idCounter = 0;
-
+function createHttpBackend($browser, XHR, $browserDefer, callbacks, body, locationProtocol) {
// TODO(vojta): fix the signature
return function(method, url, post, callback, headers, timeout) {
$browser.$$incOutstandingRequestCount();
if (lowercase(method) == 'jsonp') {
- var callbackId = ('angular_' + Math.random() + '_' + (idCounter++)).replace(/\d\./, '');
- $window[callbackId] = function(data) {
- $window[callbackId].data = data;
+ var callbackId = '_' + (callbacks.counter++).toString(36);
+ callbacks[callbackId] = function(data) {
+ callbacks[callbackId].data = data;
};
var script = $browser.addJs(url.replace('JSON_CALLBACK', callbackId), null, function() {
- if ($window[callbackId].data) {
- completeRequest(callback, 200, $window[callbackId].data);
+ if (callbacks[callbackId].data) {
+ completeRequest(callback, 200, callbacks[callbackId].data);
} else {
completeRequest(callback, -2);
}
- delete $window[callbackId];
+ delete callbacks[callbackId];
body.removeChild(script);
});
} else {