0

Ember Dataを使用して2つのモデルと2つの間の関連付けを定義し、createRecordメソッドを使用してデータを挿入しています。アソシエーションを含まない属性はモデルとgettableに存在します(適切な値を返します)が、アソシエーションのコンテンツを呼び出すと空の配列が返されます。私は何が間違っているのですか?

編集:したがって、load代わりにを使用するcreateRecordと[3,3]の配列が得られますが、それでも属性にアクセスできません。私が得ることができる最も近いものは次のとおりです:b.get("messages").get("firstObject").id、これは文字列「[objectObject]」を返します

// Store

App.store = DS.Store.create({
    revision: 6,
    adapter: App.adapter
});

// Models

App.Message = DS.Model.extend({
    msg: DS.attr('string'),
    time: DS.attr('string'),
    chat: DS.belongsTo('App.Chat')
});

App.Chat = DS.Model.extend({
    name: DS.attr('string'),
    avatar: DS.attr('string'),
    messages: DS.hasMany('App.Message', { embedded: true }),
    preview: function() {
        this.get('messages').firstObject;
    }.property('messages')
});

var a = App.store.createRecord(App.Chat, {  "id": 1,
                                            "name": 'Foo Bar',
                                            "avatar": 'test',
                                            "messages": [{
                                                "id": 1,
                                                "msg": 'This is a test post one two three',
                                                "time": '1:10pm'
                                            },{
                                                "id": 2,
                                                "msg": ' This is another test post three two one',
                                                "time": '1:15pm'
                                            }]
                                         });

var b = App.store.find(App.Chat, 1);
console.log(b.get("name")) // Foo Bar
console.log(b.get("messages").get("content")) // []  (an empty array)
4

1 に答える 1

0

のサポート {embedded: true}が削除されたのはそれほど前のことではないようです。これが機能しない理由です。この機能を元に戻すために現在保留中のプルリクエスト(機能する)があります。

https://github.com/emberjs/data/pull/428

于 2012-10-23T07:13:36.500 に答える