a) replacing the model with new data
You do not have to do anything. If you properly load records from the backend, Ember will automatically update them in the frontend.
b) informing the user with a counter or something
Loading Substance is an energetic transition. Ember also supports lazy transitions through the loading event.
You can use this event to display a counter.
Here is an example from docs :
App.ApplicationRoute = Ember.Route.extend({ actions: { loading: function(transition, route) { showSpinner(); this.router.one('didTransition', function() { hideSpinner(); }); return true;
UPD1
Do I need to do at least what I am doing right? Setting the model to an answer?
You need to flip your search by URL using query parameters . This will allow the router to automatically update the model for you.
what would I add to showSpinner to influence the material on the page (for example, can I use jQuery to show or hide the spinner element?) or show the actual boot subtask.
I would set the property on this page controller:
App.IndexRoute = Ember.Route.extend({ queryParams: { search: { refreshModel: true } }, model () { return new Ember.RSVP.Promise( resolve => setTimeout(resolve, 1000)); }, actions: { loading (transition, route) { this.controller.set('showSpinner', true); this.router.one('didTransition', () => { this.controller.set('showSpinner', false); }); return true; } } }); App.IndexController = Ember.Controller.extend({ queryParams: ['search'], search: null, showSpinner: false, });
Demo: http://emberjs.jsbin.com/poxika/2/edit?html,js,output
Or you can simply put the counter in a download template that will hide obsolete data:
http://emberjs.jsbin.com/poxika/3/edit?html,js,output
Or you can put your counter in the download template: