gpt4 book ai didi

javascript - Ember.js - Ember 数据不返回模型

转载 作者:行者123 更新时间:2023-11-30 17:48:00 24 4
gpt4 key购买 nike

我正在使用 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 - 这是一个基于您的路由器和型号的 ember 应用程序。在控制台中,您可以看到 plist.get('beats') 在 router#model 中未定义,但 html 页面包含它。

如果你想在路由器中操作模型,你可以使用 setupController。

http://emberjs.jsbin.com/oTEvIwe/3/edit - 来源。

关于 promise 的更多信息 - http://emberjs.com/guides/routing/asynchronous-routing/

关于javascript - Ember.js - Ember 数据不返回模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19715028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com