2012-04-05 61 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