findAll完成加载所有记录时的Ember-Data回调

时间:2012-04-05 15:14:00

标签: ember.js ember-data

使用ember-data我正在加载模型的所有记录:

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

每个记录加载完成后,都会调用didLoad方法。是否有一种方法可以在所有记录加载完成后调用?


修改

型号:

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

});

1 个答案:

答案 0 :(得分:6)

是的,您可以使用findQuery,然后观察.isLoaded上的ModelArray媒体资源。

e.g:

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

并观察:

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