Last active
November 18, 2015 17:37
-
-
Save jasonporritt/da02f9662db147dbb923 to your computer and use it in GitHub Desktop.
Load an Ember Data hasMany relationship after possible network request failures
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
OfflineModeRouteHelpers = Em.Mixin.create | |
robustlyLoadHasMany: (model, relationshipName) -> | |
new Em.RSVP.Promise (resolve, reject) => | |
model.get(relationshipName).then resolve, (error) => | |
internalModels = model.get("#{relationshipName}.content.canonicalState") | |
internalModels.forEach (internalModel) -> | |
internalModel._loadingPromise = null | |
internalModel.transitionTo('empty') | |
model.get(relationshipName).reload().then resolve, reject | |
`export default OfflineModeRouteHelpers` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
`import Ember from 'ember'` | |
`import OfflineModeRouteHelpers from 'offline-mode-route-helpers'` | |
CommentsRoute = Ember.Route.extend OfflineModeRouteHelpers, | |
model: (params) -> | |
@robustlyLoadHasMany(@modelFor('blog-post'), 'comments') | |
`export default CommentsRoute` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This helps Ember Data deal with network failures that happened in the past. Without these helpers, this happens:
We wanted our app to do a better job handling transitions between error states and functioning states. With the
robustlyLoadHasMany
, Suzy now has this experience: