How to reload an ember data record?
17,804
I just pushed record.reload()
to Ember Data. This will ask the adapter to reload the data from the server and update the record with the new data.
Constraints:
- You can only call
reload()
on a record if it has completed loading and has not yet been modified. Otherwise, the returned data will conflict with the modified data. In the future, we will add support for a merge hook to address these sorts of conflicts, which will allowreload()
in more record states. - If you call
reload()
and change or save the record before the adapter returns the new data, you will get an error for the same reason. The error currently looks something likeAttempted to handle event 'reloadRecord' on <Person:ember263:1> while in state rootState.loaded.updated.uncommitted.
. Basically, this means that your record was in the "updated but uncommitted" state, and you aren't allowed to callreload()
outside of the "loading and unmodified" state.
Related videos on Youtube
Author by
ramigg
Updated on September 14, 2022Comments
-
ramigg over 1 year
I'm using the new router and ember data rev 11.
I have a need to force ember-data to re-load data for a record from the server. Using
App.MyRecord.find
(2) insetInterval
function loads the data from the client local store.How can I reload the data from the server?
-
adivis over 11 yearsAre you looking for this? stackoverflow.com/questions/10563384/…
-
ramigg over 11 yearsYes, I looked at it and many other places, including internal API. It doesn't work. My Model is: App.Channel.find('ch_66'). The request to the server is /channels/ch_66 which is SHOW request (get specific channel with id='ch_66'). When using findQuery('ch_66') requests the server /channels?ch_66 which is INDEX request (get all channels)
-
-
S'pht'Kr over 11 yearsCurious, does the state of the record change while reload() is loading? I forget if there's a state when the object is initially loading that prevents it from being modified...if so could it use a similar substate in the reload() case that would obviate constraint #2?
-
commadelimited about 11 yearsYehuda...this seems to be refreshing the record, but it's not updating the UI like I would expect. Is there something that needs to be called to apply changes to the record to the UI?
-
Valer about 10 years@commadelimited If your record is dirty, the view will not rerender. A get() will return the locally modified value. You can however do a
yourRecord.reload().then(function(record) { record.rollback() })
-
alternated direction about 9 yearsis there any news on possibility of a
merge
option for reload? or giving override priority to either the local or remote version of the model?