JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8
  • Score
    100M100P100Q49749F
  • 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.

Installation

  • npm install [--save|--save-dev] ember-prefetch

Usage

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 for all routes in a transition are invoked at the beginning of the transition. This allows child routes to resolve faster because their 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/${transition.params.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.

The prefetched property provides access to a route's prefetched data. prefetched will always be a promise, but ES7 async function syntax makes working with it easy.

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

  async model() {
    return {
      OP: this.modelFor('post')).author,
      comments: await this.prefetched
    };
  }
});

Contributing

  • git clone this repository
  • npm install
  • bower install

Running Tests

  • ember test
  • ember test --server