diff --git a/.gitignore b/.gitignore
index dcfa68efd8e1..d209a68a412c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,4 @@ libpeerconnection.log
npm-debug.log
/tmp/
/scripts/bower/bower-*
+.vscode
\ No newline at end of file
diff --git a/docs/content/guide/$location.ngdoc b/docs/content/guide/$location.ngdoc
index d2d1074df64f..9d8481b34e51 100644
--- a/docs/content/guide/$location.ngdoc
+++ b/docs/content/guide/$location.ngdoc
@@ -99,11 +99,11 @@ To configure the `$location` service, retrieve the
- **hashPrefix(prefix)**: {string}
prefix used for Hashbang URLs (used in Hashbang mode or in legacy browser in Html5 mode)
- default: `""`
+ default: `"!"`
### Example configuration
```js
-$locationProvider.html5Mode(true).hashPrefix('!');
+$locationProvider.html5Mode(true).hashPrefix('*');
```
## Getter and setter methods
diff --git a/src/ng/location.js b/src/ng/location.js
index 3c91549b53b4..655f8784f414 100644
--- a/src/ng/location.js
+++ b/src/ng/location.js
@@ -701,7 +701,7 @@ function locationGetterSetter(property, preprocess) {
* Use the `$locationProvider` to configure how the application deep linking paths are stored.
*/
function $LocationProvider() {
- var hashPrefix = '',
+ var hashPrefix = '!',
html5Mode = {
enabled: false,
requireBase: true,
@@ -712,6 +712,7 @@ function $LocationProvider() {
* @ngdoc method
* @name $locationProvider#hashPrefix
* @description
+ * The default value for the prefix is `'!'`.
* @param {string=} prefix Prefix for hash part (containing path and search)
* @returns {*} current value if used as getter or itself (chaining) if used as setter
*/
diff --git a/test/ng/browserSpecs.js b/test/ng/browserSpecs.js
index 35f45cce6fdf..6630a6383b59 100755
--- a/test/ng/browserSpecs.js
+++ b/test/ng/browserSpecs.js
@@ -755,9 +755,9 @@ describe('browser', function() {
$rootScope.$apply(function() {
$location.path('/initialPath');
});
- expect(fakeWindow.location.href).toBe('http://server/#/initialPath');
+ expect(fakeWindow.location.href).toBe('http://server/#!/initialPath');
- fakeWindow.location.href = 'http://server/#/someTestHash';
+ fakeWindow.location.href = 'http://server/#!/someTestHash';
$rootScope.$digest();
@@ -774,9 +774,9 @@ describe('browser', function() {
$rootScope.$apply(function() {
$location.path('/initialPath');
});
- expect(fakeWindow.location.href).toBe('http://server/#/initialPath');
+ expect(fakeWindow.location.href).toBe('http://server/#!/initialPath');
- fakeWindow.location.href = 'http://server/#/someTestHash';
+ fakeWindow.location.href = 'http://server/#!/someTestHash';
$rootScope.$digest();
@@ -793,9 +793,9 @@ describe('browser', function() {
$rootScope.$apply(function() {
$location.path('/initialPath');
});
- expect(fakeWindow.location.href).toBe('http://server/#/initialPath');
+ expect(fakeWindow.location.href).toBe('http://server/#!/initialPath');
- fakeWindow.location.href = 'http://server/#/someTestHash';
+ fakeWindow.location.href = 'http://server/#!/someTestHash';
$rootScope.$digest();
@@ -846,7 +846,7 @@ describe('browser', function() {
$rootScope.$digest();
// from $location for rewriting the initial url into a hash url
- expect(browser.url).toHaveBeenCalledWith('http://server/#/some/deep/path', true);
+ expect(browser.url).toHaveBeenCalledWith('http://server/#!/some/deep/path', true);
expect(changeUrlCount).toBe(1);
});
diff --git a/test/ng/locationSpec.js b/test/ng/locationSpec.js
index 07efc1bbe776..6048ac7fc4cb 100644
--- a/test/ng/locationSpec.js
+++ b/test/ng/locationSpec.js
@@ -13,6 +13,28 @@ describe('$location', function() {
});
+ describe('defaults', function() {
+ it('should have hashPrefix of "!"', function() {
+ initService({});
+ inject(
+ initBrowser({ url: 'http://host.com/base/index.html', basePath: '/base/index.html' }),
+ function($location) {
+ $location.path('/a/b/c');
+ expect($location.absUrl()).toEqual('http://host.com/base/index.html#!/a/b/c');
+ });
+ });
+
+ it('should not be html5 mode', function() {
+ initService({});
+ inject(
+ initBrowser({ url: 'http://host.com/base/index.html', basePath: '/base/index.html' }),
+ function($location) {
+ $location.path('/a/b/c');
+ expect($location.absUrl()).toContain('#!');
+ });
+ });
+ });
+
describe('File Protocol', function() {
/* global urlParsingNode: true */
var urlParsingNodePlaceholder;
@@ -676,10 +698,10 @@ describe('$location', function() {
$location.path('/').replace();
}
});
- expect($browser.url()).toEqual('http://server/base/#/home');
+ expect($browser.url()).toEqual('http://server/base/#!/home');
$rootScope.$digest();
expect(handlerCalled).toEqual(true);
- expect($browser.url()).toEqual('http://server/base/#/');
+ expect($browser.url()).toEqual('http://server/base/#!/');
}
);
});
@@ -716,7 +738,7 @@ describe('$location', function() {
$rootScope.$digest();
- expect($browser.url()).toEqual('http://server/app/#/Home');
+ expect($browser.url()).toEqual('http://server/app/#!/Home');
expect($location.path()).toEqual('/Home');
expect($browserUrl).toHaveBeenCalledTimes(1);
});
@@ -732,10 +754,10 @@ describe('$location', function() {
$rootScope.$digest();
- expect($browser.url()).toEqual('http://server/app/#/');
+ expect($browser.url()).toEqual('http://server/app/#!/');
expect($location.path()).toEqual('/');
expect($browserUrl).toHaveBeenCalledTimes(1);
- expect($browserUrl.calls.argsFor(0)).toEqual(['http://server/app/#/', false, null]);
+ expect($browserUrl.calls.argsFor(0)).toEqual(['http://server/app/#!/', false, null]);
});
});
@@ -748,10 +770,10 @@ describe('$location', function() {
updatePathOnLocationChangeSuccessTo('/Home');
$rootScope.$digest();
- expect($browser.url()).toEqual('http://server/app/#/Home');
+ expect($browser.url()).toEqual('http://server/app/#!/Home');
expect($location.path()).toEqual('/Home');
expect($browserUrl).toHaveBeenCalledTimes(1);
- expect($browserUrl.calls.argsFor(0)).toEqual(['http://server/app/#/Home', false, null]);
+ expect($browserUrl.calls.argsFor(0)).toEqual(['http://server/app/#!/Home', false, null]);
});
});
@@ -764,7 +786,7 @@ describe('$location', function() {
updatePathOnLocationChangeSuccessTo('/');
$rootScope.$digest();
- expect($browser.url()).toEqual('http://server/app/#/');
+ expect($browser.url()).toEqual('http://server/app/#!/');
expect($location.path()).toEqual('/');
expect($browserUrl).toHaveBeenCalledTimes(1);
});
@@ -1822,17 +1844,17 @@ describe('$location', function() {
// we need to do this otherwise we can't simulate events
$document.find('body').append($rootElement);
- var element = $compile('v1v2')($rootScope);
+ var element = $compile('v1v2')($rootScope);
$rootElement.append(element);
var av1 = $rootElement.find('a').eq(0);
var av2 = $rootElement.find('a').eq(1);
browserTrigger(av1, 'click');
- expect($browser.url()).toEqual(base + '#/view1');
+ expect($browser.url()).toEqual(base + '#!/view1');
browserTrigger(av2, 'click');
- expect($browser.url()).toEqual(base + '#/view2');
+ expect($browser.url()).toEqual(base + '#!/view2');
$rootElement.remove();
});
@@ -1844,27 +1866,27 @@ describe('$location', function() {
var base;
module(function($locationProvider) {
return function($browser) {
- window.location.hash = '!someHash';
+ window.location.hash = '!!someHash';
$browser.url(base = window.location.href);
base = base.split('#')[0];
- $locationProvider.hashPrefix('!');
+ $locationProvider.hashPrefix('!!');
};
});
inject(function($rootScope, $compile, $browser, $rootElement, $document, $location) {
// we need to do this otherwise we can't simulate events
$document.find('body').append($rootElement);
- var element = $compile('v1v2')($rootScope);
+ var element = $compile('v1v2')($rootScope);
$rootElement.append(element);
var av1 = $rootElement.find('a').eq(0);
var av2 = $rootElement.find('a').eq(1);
browserTrigger(av1, 'click');
- expect($browser.url()).toEqual(base + '#!/view1');
+ expect($browser.url()).toEqual(base + '#!!/view1');
browserTrigger(av2, 'click');
- expect($browser.url()).toEqual(base + '#!/view2');
+ expect($browser.url()).toEqual(base + '#!!/view2');
});
});
@@ -1992,11 +2014,11 @@ describe('$location', function() {
$rootScope.$apply();
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/somePath', 'http://server/', 'http://server/']);
+ toEqual(['before', 'http://server/#!/somePath', 'http://server/', 'http://server/']);
expect($log.info.logs.shift()).
- toEqual(['after', 'http://server/#/somePath', 'http://server/', 'http://server/#/somePath']);
+ toEqual(['after', 'http://server/#!/somePath', 'http://server/', 'http://server/#!/somePath']);
expect($location.url()).toEqual('/somePath');
- expect($browser.url()).toEqual('http://server/#/somePath');
+ expect($browser.url()).toEqual('http://server/#!/somePath');
}));
@@ -2021,7 +2043,7 @@ describe('$location', function() {
$rootScope.$apply();
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/somePath', 'http://server/', 'http://server/']);
+ toEqual(['before', 'http://server/#!/somePath', 'http://server/', 'http://server/']);
expect($log.info.logs[1]).toBeUndefined();
expect($location.url()).toEqual('');
expect($browser.url()).toEqual('http://server/');
@@ -2031,7 +2053,7 @@ describe('$location', function() {
inject(function($location, $browser, $rootScope, $log) {
$rootScope.$on('$locationChangeStart', function(event, newUrl, oldUrl) {
$log.info('before', newUrl, oldUrl, $browser.url());
- if (newUrl === 'http://server/#/somePath') {
+ if (newUrl === 'http://server/#!/somePath') {
$location.url('/redirectPath');
}
});
@@ -2043,15 +2065,15 @@ describe('$location', function() {
$rootScope.$apply();
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/somePath', 'http://server/', 'http://server/']);
+ toEqual(['before', 'http://server/#!/somePath', 'http://server/', 'http://server/']);
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/redirectPath', 'http://server/', 'http://server/']);
+ toEqual(['before', 'http://server/#!/redirectPath', 'http://server/', 'http://server/']);
expect($log.info.logs.shift()).
- toEqual(['after', 'http://server/#/redirectPath', 'http://server/',
- 'http://server/#/redirectPath']);
+ toEqual(['after', 'http://server/#!/redirectPath', 'http://server/',
+ 'http://server/#!/redirectPath']);
expect($location.url()).toEqual('/redirectPath');
- expect($browser.url()).toEqual('http://server/#/redirectPath');
+ expect($browser.url()).toEqual('http://server/#!/redirectPath');
})
);
@@ -2059,7 +2081,7 @@ describe('$location', function() {
inject(function($location, $browser, $rootScope, $log) {
$rootScope.$on('$locationChangeStart', function(event, newUrl, oldUrl) {
$log.info('before', newUrl, oldUrl, $browser.url());
- if (newUrl === 'http://server/#/somePath') {
+ if (newUrl === 'http://server/#!/somePath') {
event.preventDefault();
$location.url('/redirectPath');
}
@@ -2072,15 +2094,15 @@ describe('$location', function() {
$rootScope.$apply();
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/somePath', 'http://server/', 'http://server/']);
+ toEqual(['before', 'http://server/#!/somePath', 'http://server/', 'http://server/']);
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/redirectPath', 'http://server/', 'http://server/']);
+ toEqual(['before', 'http://server/#!/redirectPath', 'http://server/', 'http://server/']);
expect($log.info.logs.shift()).
- toEqual(['after', 'http://server/#/redirectPath', 'http://server/',
- 'http://server/#/redirectPath']);
+ toEqual(['after', 'http://server/#!/redirectPath', 'http://server/',
+ 'http://server/#!/redirectPath']);
expect($location.url()).toEqual('/redirectPath');
- expect($browser.url()).toEqual('http://server/#/redirectPath');
+ expect($browser.url()).toEqual('http://server/#!/redirectPath');
})
);
@@ -2088,9 +2110,9 @@ describe('$location', function() {
inject(function($location, $browser, $rootScope, $log) {
$rootScope.$on('$locationChangeStart', function(event, newUrl, oldUrl) {
$log.info('before', newUrl, oldUrl, $browser.url());
- if (newUrl === 'http://server/#/somePath') {
+ if (newUrl === 'http://server/#!/somePath') {
$location.url('/redirectPath');
- } else if (newUrl === 'http://server/#/redirectPath') {
+ } else if (newUrl === 'http://server/#!/redirectPath') {
$location.url('/redirectPath2');
}
});
@@ -2102,17 +2124,17 @@ describe('$location', function() {
$rootScope.$apply();
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/somePath', 'http://server/', 'http://server/']);
+ toEqual(['before', 'http://server/#!/somePath', 'http://server/', 'http://server/']);
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/redirectPath', 'http://server/', 'http://server/']);
+ toEqual(['before', 'http://server/#!/redirectPath', 'http://server/', 'http://server/']);
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/redirectPath2', 'http://server/', 'http://server/']);
+ toEqual(['before', 'http://server/#!/redirectPath2', 'http://server/', 'http://server/']);
expect($log.info.logs.shift()).
- toEqual(['after', 'http://server/#/redirectPath2', 'http://server/',
- 'http://server/#/redirectPath2']);
+ toEqual(['after', 'http://server/#!/redirectPath2', 'http://server/',
+ 'http://server/#!/redirectPath2']);
expect($location.url()).toEqual('/redirectPath2');
- expect($browser.url()).toEqual('http://server/#/redirectPath2');
+ expect($browser.url()).toEqual('http://server/#!/redirectPath2');
})
);
@@ -2131,13 +2153,13 @@ describe('$location', function() {
});
- $browser.url('http://server/#/somePath');
+ $browser.url('http://server/#!/somePath');
$browser.poll();
expect($log.info.logs.shift()).
- toEqual(['start', 'http://server/#/somePath', 'http://server/']);
+ toEqual(['start', 'http://server/#!/somePath', 'http://server/']);
expect($log.info.logs.shift()).
- toEqual(['after', 'http://server/#/somePath', 'http://server/']);
+ toEqual(['after', 'http://server/#!/somePath', 'http://server/']);
})
);
@@ -2146,7 +2168,7 @@ describe('$location', function() {
$location.url('/somepath');
$rootScope.$apply();
- expect($browser.url()).toEqual('http://server/#/somepath');
+ expect($browser.url()).toEqual('http://server/#!/somepath');
expect($location.url()).toEqual('/somepath');
$rootScope.$on('$locationChangeStart', function(event, newUrl, oldUrl) {
@@ -2160,9 +2182,9 @@ describe('$location', function() {
$browser.poll();
expect($log.info.logs.shift()).
- toEqual(['start', 'http://server/', 'http://server/#/somepath']);
+ toEqual(['start', 'http://server/', 'http://server/#!/somepath']);
expect($log.info.logs.shift()).
- toEqual(['after', 'http://server/', 'http://server/#/somepath']);
+ toEqual(['after', 'http://server/', 'http://server/#!/somepath']);
})
);
@@ -2170,7 +2192,7 @@ describe('$location', function() {
inject(function($location, $browser, $rootScope, $log) {
$rootScope.$on('$locationChangeStart', function(event, newUrl, oldUrl) {
$log.info('before', newUrl, oldUrl, $browser.url());
- if (newUrl === 'http://server/#/somePath') {
+ if (newUrl === 'http://server/#!/somePath') {
$location.url('/redirectPath');
}
});
@@ -2178,21 +2200,21 @@ describe('$location', function() {
$log.info('after', newUrl, oldUrl, $browser.url());
});
- $browser.url('http://server/#/somePath');
+ $browser.url('http://server/#!/somePath');
$browser.poll();
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/somePath', 'http://server/',
- 'http://server/#/somePath']);
+ toEqual(['before', 'http://server/#!/somePath', 'http://server/',
+ 'http://server/#!/somePath']);
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/redirectPath', 'http://server/#/somePath',
- 'http://server/#/somePath']);
+ toEqual(['before', 'http://server/#!/redirectPath', 'http://server/#!/somePath',
+ 'http://server/#!/somePath']);
expect($log.info.logs.shift()).
- toEqual(['after', 'http://server/#/redirectPath', 'http://server/#/somePath',
- 'http://server/#/redirectPath']);
+ toEqual(['after', 'http://server/#!/redirectPath', 'http://server/#!/somePath',
+ 'http://server/#!/redirectPath']);
expect($location.url()).toEqual('/redirectPath');
- expect($browser.url()).toEqual('http://server/#/redirectPath');
+ expect($browser.url()).toEqual('http://server/#!/redirectPath');
})
);
@@ -2200,7 +2222,7 @@ describe('$location', function() {
inject(function($location, $browser, $rootScope, $log) {
$rootScope.$on('$locationChangeStart', function(event, newUrl, oldUrl) {
$log.info('before', newUrl, oldUrl, $browser.url());
- if (newUrl === 'http://server/#/somePath') {
+ if (newUrl === 'http://server/#!/somePath') {
event.preventDefault();
$location.url('/redirectPath');
}
@@ -2209,28 +2231,28 @@ describe('$location', function() {
$log.info('after', newUrl, oldUrl, $browser.url());
});
- $browser.url('http://server/#/somePath');
+ $browser.url('http://server/#!/somePath');
$browser.poll();
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/somePath', 'http://server/',
- 'http://server/#/somePath']);
+ toEqual(['before', 'http://server/#!/somePath', 'http://server/',
+ 'http://server/#!/somePath']);
expect($log.info.logs.shift()).
- toEqual(['before', 'http://server/#/redirectPath', 'http://server/#/somePath',
- 'http://server/#/somePath']);
+ toEqual(['before', 'http://server/#!/redirectPath', 'http://server/#!/somePath',
+ 'http://server/#!/somePath']);
expect($log.info.logs.shift()).
- toEqual(['after', 'http://server/#/redirectPath', 'http://server/#/somePath',
- 'http://server/#/redirectPath']);
+ toEqual(['after', 'http://server/#!/redirectPath', 'http://server/#!/somePath',
+ 'http://server/#!/redirectPath']);
expect($location.url()).toEqual('/redirectPath');
- expect($browser.url()).toEqual('http://server/#/redirectPath');
+ expect($browser.url()).toEqual('http://server/#!/redirectPath');
})
);
it('should listen on click events on href and prevent browser default in hashbang mode', function() {
module(function() {
return function($rootElement, $compile, $rootScope) {
- $rootElement.html('link');
+ $rootElement.html('link');
$compile($rootElement)($rootScope);
jqLite(document.body).append($rootElement);
};
@@ -2310,7 +2332,7 @@ describe('$location', function() {
});
// change through $browser
- $browser.url(base + '#/myNewPath');
+ $browser.url(base + '#!/myNewPath');
$browser.poll();
expect(log).toEqual(['/myNewPath', '/', '/myNewPath']);
diff --git a/test/ngRoute/routeSpec.js b/test/ngRoute/routeSpec.js
index 9efc0b070d04..dc247a4788ea 100644
--- a/test/ngRoute/routeSpec.js
+++ b/test/ngRoute/routeSpec.js
@@ -1073,7 +1073,7 @@ describe('$route', function() {
expect($location.path()).toEqual('/bar/id3');
expect($browserUrl.calls.mostRecent().args)
- .toEqual(['http://server/#/bar/id3?extra=eId', true, null]);
+ .toEqual(['http://server/#!/bar/id3?extra=eId', true, null]);
});
});
});