2013-01-21 51 views
1

我試圖從後端加載一些JSON並啓動一個模型。到目前爲止,我覺得我得到的模型,但沒有其屬性設置:(EmberJS:模型未用數據初始化(ember-data)

這裏是我的測試代碼:

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

App.Router.map(function() { 
    this.resource('person', { path: '/people/:person_id' }); 
}); 

App.Adapter = DS.RESTAdapter.extend({ 
    namespace: '~user1/embertest' 
}); 

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

var attr = DS.attr; 
App.Person = DS.Model.extend({ 
    firstName: attr('string'), 
    lastName: attr('string') 
}); 

App.PersonRoute = Ember.Route.extend({ 
    model: function(params) { 
     return App.Person.find(params) ; 
    } 
}); 

App.PersonController = Ember.Controller.extend({ 
    contentDidChange: function() { 
     debugger ; 
     console.info(this.get('content')); 
    }.observes('content.isLoaded') 
}) ; 

而且數據是從JSON文件,該文件只包含加載:

現在
{"persons": {"firstName": "Jeff","lastName": "Atwood"}} 

,與本地主機URL /〜用戶/ embertest.html#人/ 10我看到數據被加載和控制方法contentDidChange被調用。但是當我做

this.content.get("firstName") ; // or this.get("content").get("firstName") 

它返回「未定義」。這裏出了什麼問題?

最後,這裏是我的模板,是在:

<script type="text/x-handlebars" data-template-name="person"> 
    Person: {{content.firstName}} 
</script> 
<script type="text/x-handlebars" data-template-name="application"> 
    {{outlet}} 
</script> 

乾杯

+0

您的JSON根應該只是「人」而不是「人」 –

+0

如果我這樣做,我會在我的控制檯中得到以下錯誤消息:錯誤:斷言失敗:您的服務器返回了關鍵人物的散列,但您沒有映射因爲它 –

回答

1

嘗試刪除PersonRoute,默認模式勾應罰款。我認爲這裏發生的事情是App.Person.find(params)發送findQuery()而不是find(id)。

+0

如果我刪除該路線,我得到或多或少相同的結果,除了json的根元素必須是「人」,並且this.content.get(「firstName」)現在返回null而不是「 undefined「 –

+0

我想你必須在返回的json中有一個id。 –

+0

nope,如果我向json添加「id:10」,我得到相同的結果 –

2

我相信JSON不正確。

{"persons": {"firstName": "Jeff","lastName": "Atwood"}} 

做App.Person.find(params.person_id)時,根元素應該是「人」

{"person": {"firstName": "Jeff","lastName": "Atwood"}} 

我也不相信你所需要的PersonRoute是因爲默認情況下,路線應該是:

App.PersonRoute = Ember.Route.extend({ 
    model: function(params) { 
    return App.Person.find(params.person_id) ; 
    } 
}); 

當你的動態路徑段中有一個「* _id」。

+0

我已將其刪除,並將「人員」更改爲「人員」。看到我對另一篇文章的評論。結果仍然是一個空的模型! –