2012-04-05 60 views
8

与Ember数据我加载一个模型的所有记录有:当每个记录的加载完成灰烬,数据回调时的findAll加载完所有记录

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

}); 

回答

6

是的,你可以使用findQuery,然后观察其对ModelArray.isLoaded财产。

如:

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

而且具有观察:

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

刚刚试了一下,它确实是相同的:火了每个记录加载 – 2012-04-05 15:26:07

+0

绝对,但在你的代码,每个模型实例观察'isLoaded'属性。在我的命题中,整个'ModelArray'被观察一次,在使用上下文中... – 2012-04-05 15:32:17

+0

谢谢,完全错过了!它按照你的建议工作。不知道为什么findAll不会设置isLoaded标志。 – 2012-04-05 15:38:48