Ember.Location

private

Ember.Location returns an instance of the correct implementation of the location API.

Implementations

You can pass an implementation name (hash, history, none, auto) to force a particular implementation to be used in your application.

See Ember.Location.HashLocation. See Ember.Location.HistoryLocation. See Ember.Location.NoneLocation. See Ember.Location.AutoLocation.

Location API

Each location implementation must provide the following methods:

  • implementation: returns the string name used to reference the implementation.
  • getURL: returns the current URL.
  • setURL(path): sets the current URL.
  • replaceURL(path): replace the current URL (optional).
  • onUpdateURL(callback): triggers the callback when the URL changes.
  • formatURL(url): formats url to be placed into href attribute.
  • detect() (optional): instructs the location to do any feature detection necessary. If the location needs to redirect to a different URL, it can cancel routing by setting the cancelRouterSetup property on itself to false.

Calling setURL or replaceURL will not trigger onUpdateURL callbacks.

Custom implementation

Ember scans app/locations/* for extending the Location API.

Example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import Ember from 'ember';

const { HistoryLocation } = Ember;

export default class MyHistory {
  implementation: 'my-custom-history',
  constructor() {
    this._history = HistoryLocation.create(...arguments);
  }
  create() {
    return new this(...arguments);
  }
  pushState(path) {
     this._history.pushState(path);
  }
}

Show: