Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/pixelhandler/ember-fetchjax

Ember addon to use Fetch or AJAX
https://github.com/pixelhandler/ember-fetchjax

Last synced: 8 days ago
JSON representation

Ember addon to use Fetch or AJAX

Awesome Lists containing this project

README

        

# Ember-fetchjax

Ember Addon to use Fetch or AJAX.

The default behavior is to use Fetch when available, otherwise to use AJAX.

[![Build Status](https://travis-ci.org/pixelhandler/ember-fetchjax.svg?branch=master)](https://travis-ci.org/pixelhandler/ember-fetchjax)
[![Ember Observer Score](http://emberobserver.com/badges/ember-fetchjax.svg)](http://emberobserver.com/addons/ember-fetchjax)
[![npm](https://img.shields.io/npm/v/ember-fetchjax.svg)](https://www.npmjs.com/package/ember-fetchjax)

- Provides a set of utils to use in an Ember app, however the utils do
not require Ember, they are just JavaScript classes
- See the addon/utils directory
- No polyfill for `window.fetch` or `window.Promise` required
- If you want to use a polyfill see the bower projects `es6-promise`
and `fetch`
- Setup a `fetchjax.fetch` method to use AJAX or Fetch
- `FetchOrAjax` constructor requires dependencies, e.g. `jQuery.ajax`
- Instance defaults to native Fetch and Promise, unless you pass in
`Ember.RSVP.Promise`, or another `fetch` method
- See the `dummy` app and acceptance tests for example use

## Usage

Example route that defaults to use Fetch, but falls back to AJAX:

```js
import Ember from 'ember';
import FetchOrAjax from 'ember-fetchjax/utils/fetchjax';

const fetchjax = new FetchOrAjax({ajax: Ember.$.ajax});

export default Ember.Route.extend({
model() {
return fetchjax.fetch('/api/v1/posts', {method: 'GET'});
}
});

```

Example route the forces the use of XHR:

```js
import Ember from 'ember';
import FetchOrAjax from 'ember-fetchjax/utils/fetchjax';

const fetchjax = new FetchOrAjax({useAjax: true, ajax: Ember.$.ajax});

export default Ember.Route.extend({
model() {
return fetchjax.fetch('/api/v1/posts', {method: 'GET'});
}
});

```

## Installation

Install addon…

* `ember install ember-fetchjax`

Install for local development…

* `git clone ` this repository
* `cd ember-fetchjax`
* `npm install`
* `bower install`

## Running

* `ember serve --proxy http://api.pixelhandler.com`
* Try with Fetch or AJAX [http://localhost:4200/fetch](http://localhost:4200/fetch).
* AJAX only [http://localhost:4200/ajax](http://localhost:4200/ajax).

## Running Tests

* `npm test` (Runs `ember try:each` to test your addon against multiple Ember versions)
* `ember test`
* `ember test --server`

## Building

* `ember build`

For more information on using ember-cli, visit [http://ember-cli.com/](http://ember-cli.com/).