JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8
  • Score
    100M100P100Q49781F
  • License MIT

An Ember.js addon for escaping the waterfall.

Package Exports

  • ember-prefetch

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ember-prefetch) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Ember Prefetch Build Status npm version

This addon provides an implementation of the prefetch hook from Ember RFC #97.

  • yarn add ember-prefetch
  • alternate: npm install [--save|--save-dev] ember-prefetch

Usage

Route#prefetch

The prefetch hook is used largely the same as the model hook. It takes the same parameters (params and transition) and is not called if an object has been passed to the transition. However, the prefetch hook of all routes involved in a transition are invoked at the beginning of that transition. This enables child routes to settle faster because their network requests are made in parallel with their parents'.

App.PostRoute = Ember.Route.extend({
  prefetch(params) {
    return Ember.$.get(`/api/posts/${params.id}`);
  },
});

App.PostCommentsRoute = Ember.Route.extend({
  prefetch(params, transition) {
    return Ember.$.get(`/api/posts/${this.paramsFor('post').id}/comments`);
  },
});

The default functionality of the model hook will pick up whatever is returned from the prefetch hook. A route that defines a prefetch hook is not required to define a model hook.

Route#prefetched

The prefetched method provides access to routes' prefetched data. prefetched always returns a promise, but ES7 async function syntax simplifies working with promises.

App.PostCommentsRoute = Ember.Route.extend({
  async prefetch(params, transition) {
    return {
      // getting a parent route's data; the syntax is akin to `paramsFor`
      OP: (await this.prefetched('post')).author,
      comments: await Ember.$.get(`/api/posts/${this.paramsFor('post').id}/comments`),
    };
  },
});

Contributing

Make sure you have Yarn installed. (How do I install Yarn?)

  • git clone this repository
  • yarn install

Running Tests

  • ember test
  • ember test --server