mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-04-24 03:55:49 +08:00
fix($location): links without path segment should not change the path
Closes #648
This commit is contained in:
@@ -238,8 +238,9 @@ LocationUrl.prototype = LocationHashbangUrl.prototype = {
|
||||
return this.$$url;
|
||||
|
||||
var match = PATH_MATCH.exec(url);
|
||||
this.path(decodeURIComponent(match[1] || '')).search(match[3] || '')
|
||||
.hash(match[5] || '', replace);
|
||||
if (match[1]) this.path(decodeURIComponent(match[1]));
|
||||
if (match[2] || match[1]) this.search(match[3] || '');
|
||||
this.hash(match[5] || '', replace);
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
@@ -95,6 +95,33 @@ describe('$location', function() {
|
||||
});
|
||||
|
||||
|
||||
it('url() should change only hash when no search and path specified', function() {
|
||||
url.url('#some-hash');
|
||||
|
||||
expect(url.hash()).toBe('some-hash');
|
||||
expect(url.url()).toBe('/path/b?search=a&b=c&d#some-hash');
|
||||
expect(url.absUrl()).toBe('http://www.domain.com:9877/path/b?search=a&b=c&d#some-hash');
|
||||
});
|
||||
|
||||
|
||||
it('url() should change only search and hash when no path specified', function() {
|
||||
url.url('?a=b');
|
||||
|
||||
expect(url.search()).toEqual({a: 'b'});
|
||||
expect(url.hash()).toBe('');
|
||||
expect(url.path()).toBe('/path/b');
|
||||
});
|
||||
|
||||
|
||||
it('url() should reset search and hash when only path specified', function() {
|
||||
url.url('/new/path');
|
||||
|
||||
expect(url.path()).toBe('/new/path');
|
||||
expect(url.search()).toEqual({});
|
||||
expect(url.hash()).toBe('');
|
||||
});
|
||||
|
||||
|
||||
it('replace should set $$replace flag and return itself', function() {
|
||||
expect(url.$$replace).toBe(false);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user