Improve this doc View Source

The $location service parses the URL in the browser address bar (based on the window.location) and makes the URL available to your application. Changes to the URL in the address bar are reflected into $location service and changes to $location are reflected into the browser address bar.

The $location service:

- Exposes the current URL in the browser address bar, so you can
  - Watch and observe the URL.
  - Change the URL.
- Synchronizes the URL with the browser when the user
  - Changes the address bar.
  - Clicks the back or forward button (or clicks a History link).
  - Clicks on a link.
- Represents the URL object as a set of methods (protocol, host, port, path, search, hash).

For more information see Developer Guide: Using $location

## Dependencies

- `$rootElement`

## Methods

- ###

  `absUrl();`

  This method is getter only.

  Return full url representation with all segments encoded according to rules specified in RFC 3986.

  #### Returns

  string | full url

- ###

  `url([url], [replace]);`

  This method is getter / setter.

  Return url (e.g. `/path?a=b#hash`) when called without any parameter.

  Change path, search and hash, when called with parameter and return `$location`.

  #### Parameters

  Param | Type | Details
  --- | --- | ---
  url (optional) | string | New url without base prefix (e.g. `/path?a=b#hash`)
  replace (optional) | string | The path that will be changed

  #### Returns

  string | url

- ###

  `protocol();`

  This method is getter only.

  Return protocol of current url.

  #### Returns

  string | protocol of current url

- ###

  `host();`

  This method is getter only.

  Return host of current url.

  #### Returns

  string | host of current url.

- ###

  `port();`

  This method is getter only.

  Return port of current url.

  #### Returns

  Number | port

- ###

  `path([path]);`

  This method is getter / setter.

  Return path of current url when called without any parameter.

  Change path when called with parameter and return `$location`.

  Note: Path should always begin with forward slash (/), this method will add the forward slash if it is missing.

  #### Parameters

  Param | Type | Details
  --- | --- | ---
  path (optional) | string | New path

  #### Returns

  string | path

- ###

  `search(search, [paramValue]);`

  This method is getter / setter.

  Return search part (as object) of current url when called without any parameter.

  Change search part when called with parameter and return `$location`.

      // given url http://example.com/#/some/path?foo=bar&baz=xoxo
      var searchObject = $location.search();
      // => {foo: 'bar', baz: 'xoxo'}

      // set foo to 'yipee'
      $location.search('foo', 'yipee');
      // => $location

  #### Parameters

  Param | Type | Details
  --- | --- | ---
  search | string Object.<string>Object.<Array.<string>> | New search params - string or hash object. When called with a single argument the method acts as a setter, setting the `search` component of `$location` to the specified value. If the argument is a hash object containing an array of values, these values will be encoded as duplicate search parameters in the url.
  paramValue (optional) | string Array.<string> | If `search` is a string, then `paramValue` will override only a single search property. If `paramValue` is an array, it will override the property of the `search` component of `$location` specified via the first argument. If `paramValue` is `null`, the property specified via the first argument will be deleted.

  #### Returns

  Object | If called with no arguments returns the parsed `search` object. If called with one or more arguments returns `$location` object itself.

- ###

  `hash([hash]);`

  This method is getter / setter.

  Return hash fragment when called without any parameter.

  Change hash fragment when called with parameter and return `$location`.

  #### Parameters

  Param | Type | Details
  --- | --- | ---
  hash (optional) | string | New hash fragment

  #### Returns

  string | hash

- ###

  `replace();`

  If called, all changes to $location during current `$digest` will be replacing current history record, instead of adding new one.

## Events

- ### $locationChangeStart

  Broadcasted before a URL will change. This change can be prevented by calling `preventDefault` method of the event. See `$rootScope.Scope` for more details about event object. Upon successful change $locationChangeSuccess is fired.

  #### Type:

  broadcast

  #### Target:

  root scope

- ### $locationChangeSuccess

  Broadcasted after a URL was changed.

  #### Type:

  broadcast

  #### Target:

  root scope