Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
save-with-indication
import Ember from 'ember';
function loadAndSave(loadingProperty, operation) {
this.set(loadingProperty, true);
return operation.finally(() => {
this.set(loadingProperty, false);
});
}
export default Ember.Controller.extend({
isLoading: false,
success: '',
error: null,
actions: {
save() {
let promise = new Ember.RSVP.Promise((resolve, reject) => {
setTimeout(() => {
if (Math.random() > 0.5) {
resolve('oh yeah');
} else {
reject();
}
}, 2 * 1000);
});
return loadAndSave.call(this, 'isLoading', promise)
.then((result) => {
this.set('success', result);
})
.catch(() => {
this.set('error', 'oh noes.');
})
}
}
});
<p>
{{if isLoading 'Loading...'}}
{{if success success}}
{{if error error}}
</p>
<button type="button"
onclick={{action "save"}}
disabled={{isLoading}}>Save</button>
{
"version": "0.10.5",
"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.8.0",
"ember-data": "2.8.0",
"ember-template-compiler": "2.8.0",
"ember-testing": "2.8.0"
},
"addons": {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.