簡體   English   中英

Ember.js-Ember數據未返回模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM