Skip to content

Instantly share code, notes, and snippets.

@n1ru4l
Last active May 18, 2017 05:47
Show Gist options
  • Save n1ru4l/738df6224819f0ab4209e6748c96766e to your computer and use it in GitHub Desktop.
Save n1ru4l/738df6224819f0ab4209e6748c96766e to your computer and use it in GitHub Desktop.
Ember Graphql Query Component
import Ember from 'ember';
import gql from 'graphql-tag'
const query = gql`
query pokedex {
pokedex {
pokemon(start: 0 number: 10) {edges {node {id name}}}
}
}
`
var PromiseObject = Ember.ObjectProxy.extend(Ember.PromiseProxyMixin)
console.log(query)
export default Ember.Component.extend({
apollo: Ember.inject.service(),
execQuery: Ember.on('init', function () {
const promise = PromiseObject.create({
promise: this.get('apollo').query({ query })
});
this.set('promise', promise)
}),
unsubQuery: Ember.on('willDestroyElement', function () {
const model = this.get('model')
model._apolloUnsubscribe()
}),
model: Ember.computed.reads('promise'),
//isLoading: Ember.computed.reads('promise.isPending'),
//isRejected: Ember.computed.reads('promise.isRejected'),
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
<h1>Query Component Example</h1>
{{#query-wrapper as |query|}}
{{#if query.isLoading}}
Loading...
{{else if query.isRejected}}
Error...
{{else}}
<ul>
{{#each query.pokedex.pokemon.edges as |edge|}}
<li>{{edge.node.id}} {{edge.node.name}}</li>
{{/each}}
</ul>
{{/if}}
{{/query-wrapper}}
{{outlet}}
<br>
<br>
{{yield (hash
pokedex=model.pokedex
isLoading=isLoading
isRejected=isRejected
)}}
{
"version": "0.12.1",
"ENV": {
"apollo": {
"apiURL": "https://pokeapi-graphiql.herokuapp.com"
}
},
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0"
},
"addons": {
"ember-data": "2.12.1",
"ember-apollo-client": "0.3.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment