2012-04-05 5 views
8

Con brasa-datos Estoy cargando todos los registros de un modelo con:devolución de llamada Ember-Data findAll cuando terminó de cargar todos los registros

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); 
     }); 
    } 
}); 

El método didLoad se llama cuando cada uno de los registros se ha terminado de cargar. ¿Hay un método para llamar cuando todos los registros han terminado de cargarse?


EDITAR

Modelo:

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') 

}); 

Respuesta

6

sí, se puede utilizar findQuery, y luego observar .isLoaded propiedad en el ModelArray.

por ejemplo:

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

Y tener la observación:

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

Sólo probé y hace lo mismo: incendios arriba en cada registro cargado –

+0

Por supuesto, pero en su código, cada instancia de modelo observa la propiedad 'isLoaded'. En mi proposición, todo el 'ModelArray' se observa una vez, en el contexto de uso ... –

+0

¡Gracias, lo extrañé por completo! Funciona como sugieres. No estoy seguro de por qué 'findAll' no establece el indicador' isLoaded'. –

Cuestiones relacionadas