2013-02-28 8 views
8

ODPOWIEDŹ NA NINIEJSZE PYTANIE ORAZ NINIEJSZE PYTANIE JEST OBSOLETOWE. EMBER DATA ZMIENIAŁA DUŻO. PRZECZYTAJ TO: http://guides.emberjs.com/v1.11.0/models/

mam tę małą aplikację Ember:Jak uzyskać długość wyniku wyszukiwania() w pliku 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')); 
}; 

I Get Right tytuł w console.dir(App.Model.find(1).get('title') jednak oba połączeń get('length') return 0. Czego mi brakuje?

Oto (nie) jsbin pracy: http://jsbin.com/uxalap/6/edit

Odpowiedz

9

Powodem może być to, że są powołując get("length") nawet zanim dane zostaną załadowane,

Zasadniczo gdy robisz App.Model.find() to powrót instancję z RecordArray, ale nie będzie danych, w tle zapyta o bazę danych i pobierze dane, teraz po załadowaniu danych znajdziesz rzeczywistą długość

możesz spróbować dodać Observera na isLoaded własności y następująco

record = App.store.findQuery(App.Model); 
alertCount = function(){ 
    if(record.isLoaded){ 
    alert(record.get("length")); 
    } 
}; 
Ember.addObserver("isLoaded", record, alertCount); 
+0

Można również użyć Event '' zamiast didLoad pośredniej obserwacji własności: record.one ('didLoad', function() {alert (record.get ('długość'))}); –

+0

@ ChristopherSwasey teraz dostaję: Błąd: nie znaleziono na RSVP.onerrorDefault – SuperUberDuper

+2

Ta QA ma 2 lata, a Ember Data znacznie się zmieniła w tym czasie. Szkoda, że ​​nie było sposobu na flagę i przestarzałe pytania/odpowiedzi na temat SO. –

Powiązane problemy