2012-04-05 12 views
8

Con brace-dati Sto caricando tutti i record di un modello con:callback Ember-Data quando findAll terminato il caricamento di tutti i record

App.adapter = DS.Adapter.create({ 
    findAll: function(store, type) { 
     var url = type.url; 
     jQuery.getJSON(url, function(data) { 
      var ids = data.map(function(item, index, self){ return item.id }); 
      store.loadMany(type, ids, data); 
     }); 
    } 
}); 

Il metodo didLoad viene chiamato quando ciascuno dei record ha terminato il caricamento. Esiste un metodo per chiamare quando è stato completato il caricamento di tutti i record?


EDIT

Modello:

App.Article = DS.Model.extend({ 

    title: DS.attr('string'), 
    content: DS.attr('string'), 


    checkIsLoaded: function() { 
     if (this.get('isLoaded')){ 
     console.log('loaded!'); // outputs `loaded` for each record 
     } 
    }.observes('isLoaded') 

}); 

risposta

6

Sì, è possibile utilizzare findQuery, e poi osservare .isLoaded proprietà sul ModelArray.

esempio:

load: -> 
    @set 'data', @get('store').findQuery App.MyModel, { q: '...' } 

E avere l'osservazione:

loadingComplete: (-> 
    @doSomeStuff() if @getPath 'data.isLoaded' 
).observes 'data.isLoaded' 
+0

appena provato e lo fa lo stesso: incendi in alto su ogni record caricati –

+0

Assolutamente, ma nel codice, ogni istanza modello osserva la proprietà 'isLoaded'. Nella mia proposizione, l'intero 'ModelArray' viene osservato una volta, nel contesto di utilizzo ... –

+0

Grazie, assolutamente mancato! Funziona come suggerisci tu. Non sono sicuro del motivo per cui findAll' non imposta il flag 'isLoaded'. –

Problemi correlati