Skip to content

tchak/ember-fetch

This branch is 524 commits behind ember-cli/ember-fetch:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

08d9e02 · May 13, 2018
Apr 4, 2018
May 13, 2018
Apr 4, 2018
May 13, 2018
May 13, 2018
Oct 17, 2016
Mar 15, 2015
Apr 4, 2018
Aug 19, 2017
Apr 4, 2018
Apr 4, 2018
Jan 31, 2016
Dec 20, 2017
Apr 4, 2018
Feb 6, 2018
Dec 18, 2017
Apr 4, 2018
Dec 18, 2017
May 13, 2018
May 13, 2018
Apr 4, 2018
May 13, 2018

Repository files navigation

Ember-fetch

Build Status Build status Ember Observer Score npm version

HTML5 fetch polyfill from github wrapped and bundled for ember-cli users

Installation

  • ember install ember-fetch

Usage

import fetch from 'fetch';
import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return fetch('/my-cool-end-point.json').then(function(response) {
      return response.json();
    });
  }
});

Use with Ember Data

To have Ember Data utilize fetch instead of jQuery.ajax to make calls to your backend, extend your project's application adapter with the adapter-fetch mixin.

// app/adapters/application.js
import DS from 'ember-data';
import AdapterFetch from 'ember-fetch/mixins/adapter-fetch';

export default DS.RESTAdapter.extend(AdapterFetch, {
  ...
});

Use with Fastboot

Currently, Fastboot supplies its own server-side ajax functionality, and including ember-fetch and the adapter-fetch mixin in a Fastboot app will not work without some modifications. To allow the node-fetch polyfill that is included with this addon to make your API calls, you must add an initializer to the consuming app's fastboot directory that overrides the one Fastboot utilizes to inject its own ajax.

Example:

// fastboot/initializers/ajax.js

export default {
  name: 'ajax-service',
  initialize() {
    // noop
    // This is to override Fastboot's initializer which prevents ember-fetch from working
    // https://github.com/ember-fastboot/ember-cli-fastboot/blob/master/fastboot/initializers/ajax.js
  }
}

Browser Support

does this replace ic-ajax?

  • ideally yes, but only if you cater to IE9+
  • for basic drop-in compat import ajax from 'ember-fetch/ajax'

What about all the run-loop and promise mixing details?

  • taken care of for you

why is this wrapper needed?

  • original emits a global
  • original requires a Promise polyfill (ember users have RSVP)
  • original isn't Ember run-loop aware

Won't this wrapper get out-of-sync?

  • we actually don't bundle github/fetch rather we merely wrap/transform what comes from node_modules, so we should be resilient to changes assuming semver from the fetch module

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 91.5%
  • HTML 5.1%
  • Perl 3.4%