Skip to content

Instantly share code, notes, and snippets.

@bantic
Last active April 25, 2017 17:49
Show Gist options
  • Save bantic/85e700a6f85a54cb9c7b2385e22472b9 to your computer and use it in GitHub Desktop.
Save bantic/85e700a6f85a54cb9c7b2385e22472b9 to your computer and use it in GitHub Desktop.
promises 5
import Ember from 'ember';
let ready = false;
export default Ember.Route.extend({
readyHandler: Ember.inject.service(),
model() {
return new Ember.RSVP.Promise((resolve) => {
setTimeout(resolve, 2000);
}).then(() => {
return this.get('readyHandler.isReady');
});
},
afterModel(ready) {
if (!ready) {
throw new Error('not ready');
}
}
});
import Ember from 'ember';
export default Ember.Route.extend({
readyHandler: Ember.inject.service(),
actions: {
becomeReady() {
console.log('loading becomeReady');
this.get('readyHandler').set('isReady', true);
}
}
});
import Ember from 'ember';
export default Ember.Service.extend({
isReady: false
});
<p>(Tricky) Edit <em>only</em> hbs file(s) so that the index route can be successfully entered.</p>
<p>
<button {{action (action (mut hint1) true)}}>Hint 1</button>
{{#if hint1}}
Look at both route files.
{{/if}}
</p>
<p>
<button {{action (action (mut hint2) true)}}>Hint 2</button>
{{#if hint2}}
Even after editing, you will still need to interact with the page while it is loading in order to make it to the index route.
{{/if}}
</p>
<br>
{{outlet}}
<h2>fail {{model}}</h2>
{
"version": "0.12.1",
"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"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment