[英]Ember.js - Ember Data not returning a model
我正在使用Ember Data來檢索帶有歌曲的播放列表。 代碼是:
App.PlaylistRoute = Em.Route.extend({
model: function(params) {
var plist = this.store.find('playlist', params.id);
console.log(plist);
return [];
}
})
App.Playlist = DS.Model.extend({
beats: DS.hasMany('beat')
});
App.Beat = DS.Model.extend({
name: DS.attr('string')
});
此代碼的問題在於,它可以工作並返回數據,但返回的對象是模糊的對象,而不是模型。 然后我不能執行plist.get('beats')
或plist.get('id')
因為它只返回undefined
。 JSON數據非常簡單:
{
"playlist": {
"id": "popular-beats",
"beats": [
"1",
"2"
]
},
"beats": [
{
"id": "1",
"name": "Name"
},
{
"id": "2",
"name": "Another Name"
}
]
}
當我在控制台中記錄數組時,這是返回的對象:
__ember1383247403867: "ember293"
__ember1383247403867_meta: e
_super: undefined
content: s
isFulfilled: true
toString: function (){return e}
__proto__: Object
如果我深入研究content._data
我將找到beats
數組-這樣就成功加載了數據,但它沒有返回我期望的正確模型。
store.find()不會立即返回模型對象,而是返回promise,將來將包含“ beats”和“ id”屬性。 因此您可以在模板中使用模型,並且在更新模型時也會更新模板。
http://emberjs.jsbin.com/oTEvIwe/3-這是基於您的路由器和型號的余燼應用程序。 在控制台中,您可以看到plist.get('beats')在router#model中未定義,但html頁面包含它。
如果要在路由器中使用模型進行操作,可以使用setupController。
http://emberjs.jsbin.com/oTEvIwe/3/edit-源。
有關承諾的更多信息-http: //emberjs.com/guides/routing/asynchronous-routing/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.