2013-02-28 5 views
8

BU SORUNUN CEVABİLİR VE BU BÜTÜN SORU OBSOLETE'DİR. EMBER VERİLERİ ÇOK DEĞİŞTİ. OKUYUN:

http://guides.emberjs.com/v1.11.0/models/ Bu küçük Kor uygulama var: Bir find() sonucunun uzunluğunu nasıl elde edersiniz? Ember.js

window.App = Ember.Application.create(); 

App.Store = DS.Store.extend({ 
    revision: 11, 
    adapter: DS.FixtureAdapter({ 
    simulateRemoteResponse: false 
    }) 
}); 

App.Model = DS.Model.extend({ 
    title: DS.attr('string') 
}); 
App.Model.FIXTURES = []; 

App.ready = function() { 
    console.dir(App.Model.find().get('length')); 
    App.Model.createRecord({id: 1, title: "TEST"}); 
    console.dir(App.Model.find().get('length')); 
    console.dir(App.Model.find(1).get('title')); 
}; 

Ben ancak get('length') aramaların hem console.dir(App.Model.find(1).get('title') doğru ünvanı almak dönüş 0. ben eksik? İşte

bir (olmayan) çalışma jsbin geçerli: http://jsbin.com/uxalap/6/edit

cevap

9

veri yüklenmiş önce bile get("length"),

Temelde

Eğer App.Model.find() yaptığınızda size bir örneğini döndürür yürütmesini olduğunu nedeni olabilir RecordArray, ancak veri yok, veri tabanı ile sorgular ve veriyi alacaktır arka planda, şimdi veri yüklendiğinde gerçek uzunluğu

bulacaksınız Bir Gözlemci eklemeye çalışabilirsiniz isLoaded propert Y, aşağıdaki gibi

record = App.store.findQuery(App.Model); 
alertCount = function(){ 
    if(record.isLoaded){ 
    alert(record.get("length")); 
    } 
}; 
Ember.addObserver("isLoaded", record, alertCount); 
Ayrıca yerine dolaylı özelliği gözlem 'didLoad' olayını kullanabilirsiniz
+0

: record.one ('didLoad', fonksiyon() {uyarı (record.get ('uzunluğu'))}); –

+0

@ChristopherSwasey şimdi alıyorum: Hata: bulunamadı at RSVP.onerrorDefault – SuperUberDuper

+2

Bu QA 2 yaşında ve o zamanlar Ember Data önemli ölçüde değişti. SO üzerinde bayrak ve eskimiş soruları/cevapları bulmanın bir yolu olsaydı. –