-
Notifications
You must be signed in to change notification settings - Fork 50
Home
Joshua Plicque edited this page Jan 9, 2017
·
5 revisions
Accessing a collection route is straightforward but has a bit of an awkward interface, because the collection route action is actually a method on an instance.
this.store.createRecord('fruit').citrus({param: value, param2: value2}).then( () => ... );
If the response to your memberAction
returns the updated state of the object you changed, you can update the store with the following. This assumes a component structure and a JSONAPI interface, although assuming you set up your adapters correctly, it should work with any interface.
The model:
// models/article.js
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { memberAction } from 'ember-api-actions';
export default Model.extend({
name: attr('string'),
body: attr('string'),
publish: memberAction({
path: 'publish',
type: 'put'
})
});
and the component:
// components/one-article/component.js
import Ember from 'ember';
export default Ember.Component.extend({
store: Ember.inject.service(),
actions: {
publish() {
this.get('article').publish().then((response) => {
this.get('store').push(this.get('store').normalize('article', response.data));
});
}
}
});