aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMisko Hevery2011-11-08 20:42:16 -0800
committerMisko Hevery2011-11-14 20:31:15 -0800
commitc283bf6035566aa8ff3178676a133de6878b5d1b (patch)
tree7840abc149b6b056a76ac5016756fed32e6364ab
parentb3c17f3fdcf37403c5fb71f9916983a10e17c783 (diff)
downloadangular.js-c283bf6035566aa8ff3178676a133de6878b5d1b.tar.bz2
refactor($location): merged $locationConfig service into $locationProvider
-rw-r--r--docs/content/guide/dev_guide.services.$location.ngdoc16
-rw-r--r--docs/src/templates/docs.js7
-rw-r--r--src/Angular.js1
-rw-r--r--src/service/location.js38
-rw-r--r--test/service/locationSpec.js10
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('!');
};
}