0

私の観点からは、ExtJS で関連付けを使用してモデルの最も単純な方法を構築します。

モデル: 投稿-- hasOne -->ユーザー

私がしたこと:

  • メモリ プロキシの使用
  • ルールに従ってください: モデル内のプロキシ
  • で投稿オブジェクトを読み込みますPost.load(...)

しかし、ユーザーオブジェクトを取得しようとすると、正しくロードされません:
(ここに完全なソース: http://jsfiddle.net/7XRw4/4/ )

Ext.define('Post', {
    extend: 'Ext.data.Model',
    fields: ['user_id', 'content'],
    hasOne: 'User',
    proxy: {
        type: 'memory',
        data: {
            posts: [
                {id:1, user_id:1, content:'foo'},
                {id:2, user_id:1, content:'bar'}
            ]
        },
        reader: {
            type: 'json',
            root: 'posts'
        }
    }
});


Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: ['name'],
    proxy: {
        type: 'memory',
        data: {
            users: [
                {id:1, name:'hans'},
                {id:2, name:'klaus'}
            ]
        },
        reader: {
            type: 'json',
            root: 'users'
        }
    }
});

Ext.onReady(function() {
    console.log("Ext.onReady() invoked...");

    Post.load('1', {
        success: function(record, operation) {
            thePost = record;

            console.log('thePost:', thePost);
            theUser = thePost.getUser();
            console.log('theUser:', theUser);

            alert('The user name: ' + theUser.get('name'));
            // The user object will not be right loaded! Why?
        }
    });

});
4

1 に答える 1

0

.getUser は非同期ではありませんか? 成功関数を提供し、その成功関数でユーザーの名前を警告する必要があることを意味しますか?

しかし、Ext の hasOne リレーションには多くの問題がありました。ドキュメンテーション、チュートリアル、ドキュメンテーションに関するコメント - json で完全な関係を送信しないと、同意することはなく、何も機能しません。

于 2013-02-14T09:39:52.163 に答える