2012-11-19 66 views
0

我在客戶端&紅寶石使用在服務器側灰燼-數據來從postgres的SQL數據庫中的數據,自動對象陣列轉換

當我App.Person.findAll(App.Person)從服務器端我返回紅寶石散列的陣列對象

現在,當我做console.log(typeof App.Person.findAll(App.Person))它打印'object'

但是當我在車把上的使用,

//Here I set in my ArrayController this.set('content', App.Person.findAll(App.Person)); 
{{#collection contentBinding="content"}} 
    Name: {{view.content.name}} 
{{/collection}} 

它打印所有的名字,就好像我們正在迭代一個對象數組一樣,是否將對象轉換爲數組?

+0

那個打印物體有什麼? – thecodejack

+0

打印沒有任何問題,正如預期的那樣,疑問是當內容類型爲Object時,如何迭代內容。 –

回答

2

使用 App.Person.findAll(App.Person).toArray() 看的記錄的陣列,並且 record.toJSON()看到一個記錄作爲對象嘗試;即

App.Person.findAll(App.Person).map(function(record) { 
    return record.toJSON(); 
} 

通過的findAll(返回的結果)是RecordArrayhttps://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/store.js#L378

https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/record_arrays/record_array.js

RecordArray延伸ArrayProxy,其繼承了toArray()方法。

+0

我認爲我沒有正確地撰寫我的問題,我知道toArray()方法確實得到數組列表,我懷疑即使我們不使用.toArray()App.Person.findAll(App.Person)Handlebars仍然能夠遍歷它,我有一個窺探到手柄幫助器定義,但找不到任何將App.Person.findAll(App.Person)返回的「對象」轉換爲數組以迭代 –

+0

'collection ''和'each'幫助器將該對象的路徑作爲一個字符串;爲了看看詳細情況,我建議你在代碼中爲Ember.Handlebars.helper設置一個斷點(在你的情況下爲'collection':https://github.com/emberjs/ember.js/blob/master /packages/ember-handlebars/lib/helpers/collection.js#L142)並進行調試以查看它的功能;調試時我無法掌握細節。 – Ygg