diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Angular.js | 2 | ||||
| -rw-r--r-- | src/AngularPublic.js | 3 | ||||
| -rw-r--r-- | src/service/httpBackend.js | 20 |
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 { |
