0

User と Order という 2 つの関連付けられたモデルがあります。ユーザーには多くの注文があります。

Ext.define("User", {
    extend: 'Ext.data.Model',
    fields: [
        'id', 'name'
    ],

    hasMany: {model: 'Order', name: 'orders'},

    proxy: {
        type: 'ajax',
        url : 'users.json',
        reader: {
            type: 'json',
            root: 'users'
        }
    }
});

Ext.define("Order", {
    extend: 'Ext.data.Model',
    fields: [
        'id', 'total'
    ],

    belongsTo: 'User'
});

すべてのユーザーを 1 つのグリッド パネルに表示し、すべての注文を別のグリッドに表示したいと考えています。すべてのユーザーをグリッドに表示する方法を知っています。ユーザー モデルを使用してストアを定義するだけです。しかし、すべての注文を別のグリッドに表示する方法について少し迷っています。別のストアを定義する必要がありますか? どのプロキシを使用しますか? 誰にも洞察力がありますか?基本的に、概念的な理解が必要です。

4

2 に答える 2

1

あなたが求めているのは、かなり一般的なユースケースだと思います。残念ながら、ExtJs はまだこれに対処することができません。現在、各グリッドはストアにバインドされていますが、注文ストアは、ユーザーの関連付けを通じてアクセスするたびにオンザフライで作成されます。

良いニュースは、これを達成するためのさまざまな方法があることです。私が考えることができる最善の方法は、ユーザーがユーザー行をクリックするたびに、注文ストア ( user.orders()) を取得することです。次に、この新しいストアでグリッドを再構成できます。

于 2013-02-11T13:05:09.353 に答える
0

通常、各グリッドには独自のストアが必要です。すべての注文を表示することは、すべてのユーザーを表示することと同じように機能します。ストア ID を変更するだけで問題ありません。

于 2013-02-11T12:13:13.787 に答える