diff options
| author | Misko Hevery | 2011-11-08 20:42:16 -0800 |
|---|---|---|
| committer | Misko Hevery | 2011-11-14 20:31:15 -0800 |
| commit | c283bf6035566aa8ff3178676a133de6878b5d1b (patch) | |
| tree | 7840abc149b6b056a76ac5016756fed32e6364ab | |
| parent | b3c17f3fdcf37403c5fb71f9916983a10e17c783 (diff) | |
| download | angular.js-c283bf6035566aa8ff3178676a133de6878b5d1b.tar.bz2 | |
refactor($location): merged $locationConfig service into $locationProvider
| -rw-r--r-- | docs/content/guide/dev_guide.services.$location.ngdoc | 16 | ||||
| -rw-r--r-- | docs/src/templates/docs.js | 7 | ||||
| -rw-r--r-- | src/Angular.js | 1 | ||||
| -rw-r--r-- | src/service/location.js | 38 | ||||
| -rw-r--r-- | test/service/locationSpec.js | 10 |
5 files changed, 38 insertions, 34 deletions
diff --git a/docs/content/guide/dev_guide.services.$location.ngdoc b/docs/content/guide/dev_guide.services.$location.ngdoc index 51747516..a8e79111 100644 --- a/docs/content/guide/dev_guide.services.$location.ngdoc +++ b/docs/content/guide/dev_guide.services.$location.ngdoc @@ -88,26 +88,22 @@ setter methods that allow you to get or change the current URL in the browser. ## $location service configuration -To configure the `$location` service, you define the `$locationConfig` service which is an object -with configuration properties: +To configure the `$location` service, you get a hold of +{@link angular.module.ng.$locationProvider $locationProvider} service and configure it with these +methods: -- **html5Mode**: {boolean}<br /> +- **html5Mode(mode)**: {boolean}<br /> `true` - see HTML5 mode<br /> `false` - see Hashbang mode<br /> default: `false` -- **hashPrefix**: {string}<br /> +- **hashPrefix(prefix)**: {string}<br /> prefix used for Hashbang URLs (used in Hashbang mode or in legacy browser in Html5 mode)<br /> default: `'!'` ### Example configuration <pre> -angular.service('$locationConfig', function() { - return { - html5mode: true, - hashPrefix: '!' - }; -}); +$locationProvider.html5Mode(true).hashPrefix('!'); </pre> ## Getter and setter methods diff --git a/docs/src/templates/docs.js b/docs/src/templates/docs.js index 0c8d787a..09a9e708 100644 --- a/docs/src/templates/docs.js +++ b/docs/src/templates/docs.js @@ -152,9 +152,6 @@ function TutorialInstructionsCtrl($cookieStore) { window.angular = window.angular || {}; angular.module = angular.module || {}; -angular.module.ngdocs = function($provide) { - $provide.value('$locationConfig', { - html5Mode: true, - hashPrefix: '!' - }); +angular.module.ngdocs = function($locationProvider) { + $locationProvider.html5Mode(true).hashPrefix('!'); }; diff --git a/src/Angular.js b/src/Angular.js index bb75bc4e..69a5e4ca 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -954,7 +954,6 @@ function ngModule($provide, $injector) { $provide.service('$filter', $FilterProvider); $provide.service('$formFactory', $FormFactoryProvider); $provide.service('$location', $LocationProvider); - $provide.service('$locationConfig', $LocationConfigProvider); $provide.service('$log', $LogProvider); $provide.service('$parse', $ParseProvider); $provide.service('$resource', $ResourceProvider); diff --git a/src/service/location.js b/src/service/location.js index 7cc5c273..11a69e96 100644 --- a/src/service/location.js +++ b/src/service/location.js @@ -420,15 +420,35 @@ function locationGetterSetter(property, preprocess) { * For more information see {@link guide/dev_guide.services.$location Developer Guide: Angular Services: Using $location} */ function $LocationProvider(){ - this.$get = ['$rootScope', '$browser', '$sniffer', '$locationConfig', '$document', - function( $rootScope, $browser, $sniffer, $locationConfig, $document) { + var hashPrefix = '', + html5Mode = false; + + this.hashPrefix = function(prefix) { + if (isDefined(prefix)) { + hashPrefix = prefix; + return this; + } else { + return html5Mode; + } + } + + this.html5Mode = function(mode) { + if (isDefined(mode)) { + html5Mode = mode; + return this; + } else { + return html5Mode; + } + }; + + this.$get = ['$rootScope', '$browser', '$sniffer', '$document', + function( $rootScope, $browser, $sniffer, $document) { var currentUrl, basePath = $browser.baseHref() || '/', pathPrefix = pathPrefixFromBase(basePath), - hashPrefix = $locationConfig.hashPrefix || '', initUrl = $browser.url(); - if ($locationConfig.html5Mode) { + if (html5Mode) { if ($sniffer.history) { currentUrl = new LocationUrl(convertToHtml5Url(initUrl, basePath, hashPrefix), pathPrefix); } else { @@ -505,13 +525,3 @@ function $LocationProvider(){ return currentUrl; }]; } - -//TODO(misko): refactor to service -function $LocationConfigProvider(){ - this.$get = function() { - return { - html5Mode: false, - hashPrefix: '' - }; - }; -} diff --git a/test/service/locationSpec.js b/test/service/locationSpec.js index 65ca36a7..30c3f790 100644 --- a/test/service/locationSpec.js +++ b/test/service/locationSpec.js @@ -308,8 +308,9 @@ describe('$location', function() { function initService(html5Mode, hashPrefix, supportHistory) { - return function($provide){ - $provide.value('$locationConfig', {html5Mode: html5Mode, hashPrefix: hashPrefix}); + return function($provide, $locationProvider){ + $locationProvider.html5Mode(html5Mode); + $locationProvider.hashPrefix(hashPrefix); $provide.value('$sniffer', {history: supportHistory}); }; } @@ -576,7 +577,7 @@ describe('$location', function() { var root, link, originalBrowser, lastEventPreventDefault; function configureService(linkHref, html5Mode, supportHist, attrs, content) { - return function($provide){ + return function($provide, $locationProvider){ var jqRoot = jqLite('<div></div>'); attrs = attrs ? ' ' + attrs + ' ' : ''; link = jqLite('<a href="' + linkHref + '"' + attrs + '>' + content + '</a>')[0]; @@ -586,7 +587,8 @@ describe('$location', function() { $provide.value('$document', jqRoot); $provide.value('$sniffer', {history: supportHist}); - $provide.value('$locationConfig', {html5Mode: html5Mode, hashPrefix: '!'}); + $locationProvider.html5Mode(html5Mode); + $locationProvider.hashPrefix('!'); }; } |
