2013-07-19 55 views
1

我試圖加載一些數據,但我得到這個錯誤:錯誤與灰燼本地存儲適配器加載數據

Uncaught Error: Attempted to handle event `loadedData` on <App.Person:ember295:1q697> while in state rootState.loaded.created.inFlight. Called with undefined 

裝載發生這樣的:

App.then(function(){ 
    App.mystuff = ['Nina', 'Paul', 'Zoe']; 

    App.mystuff.forEach(function(item){ 
    console.log("this is the item:"); 
    console.log(item) 
    var p = App.Person.createRecord({name: item}) 
    p.save(); // just save on LS Adapter 
    }); 
    console.log("Were they added?"); 
    console.log(App.Person.find()); 
}); 

你可以在this JSbin中看到該應用程序。你知道如何解決它嗎?

基本上我想知道如何讓App.Person.find()在控制檯和代碼中工作。到目前爲止,我沒有收到任何結果。

Possibly related

回答

1

I'm trying to load some data, but I'm getting this error... Do you know how to fix it?

似乎本地存儲適配器有問題記錄在inFlight中訪問。這是令人驚訝的,但很容易解決。既然你正在嘗試當應用程序初始化數據加載到本地存儲,建議從路線的beforeModel鉤加載它:

beforeModel: function() { 
    return App.mystuff.map(function(i) { 
    return App.Person.createRecord({name: i}).save(); 
    }); 
}, 

此外,建議指定與每個記錄的ID,否則你最終會造成重複的本地副本。像這樣的東西應該工作:

beforeModel: function() { 
    return App.mystuff.map(function(i) { 
    return App.Person.createRecord({id: i, name: i}).save(); 
    }); 
}, 

看到這個jsbin的工作例如:http://jsbin.com/ofemib/2/edit

Basically I would like to know how to get App.Person.find() to work in the console and the code. I'm not getting results anywhere so far.

在一般情況下,你可以得到一個模型的find到的方法來從控制檯通過一個函數,像工作這樣的:

App.Person.find().then(function(results) { console.log(results.get('length')) }); 

這不是一個真正的本地存儲的東西,剛剛好做法的東西,是異步工作。

0

我不確定這是否有幫助,但我舉了幾個例子。我更新了一些隨機庫,但總體思路仍然存在。

JSBin

0

原因其失敗是燼試圖訪問數據App.Person.find()正在保存的數據。這是一個有趣的場景,因爲應用程序通常不會自己創建記錄,而是要在啓動時創建(認爲是fixtures),或者它們是由用戶在頁面內創建的,而不是在轉換過程中創建的。

我建議使用ember的fixtureadapter進行初始測試,並且一旦您的應用程序與燈具配合良好,然後移動到您選擇的存儲設備。這樣你就可以專注於創建應用程序的重要方面,並在以後擔心持久性。

+0

「當正在保存數據時,」ember試圖訪問App.Person.find()中的數據「......這是因爲ember是異步的,對吧?在開始時擺脫保存是不可避免的,因爲我實際上是從數據庫中檢索數據,然後每次都在本地保存數據。那麼我應該怎麼做才能擺脫錯誤? –

+0

訣竅是不保存在轉換中。就你而言,它看起來像是在試圖保存測試數據,所以在生產環境中,這不會發生。這就是爲什麼我建議使用燈具,因爲它會繞過你的問題。不幸的是,Ember-data在飛行中(現在)不允許對模型進行任何改變,因此我無法知道這一點。 – Gevious

相關問題