2013-02-11 72 views
0

我有兩個關聯的模型,用戶和訂單。用戶有許多訂單。如何在單獨的Ext網格中顯示相關模型?

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' 
}); 

我想在一個網格面板中顯示所有用戶,並在另一個網格中顯示所有訂單。我知道如何在網格中顯示所有用戶,我只需用User模型定義商店。但是我對如何在單獨的網格中顯示所有訂單感到有點遺憾。我需要定義一個單獨的商店嗎?我使用哪個代理?任何人都有見識?基本上,我只需要一個概念性的理解。

+0

是否要根據選定的用戶顯示訂單或僅顯示所有訂單? – Vogel612 2013-02-11 12:11:19

回答

0

通常每個網格都需要自己的Store。顯示所有訂單的方式與展示所有用戶的方式相同,只需更改商店ID即可。

1

我相信你所要求的是一個相當常見的用例。不幸的是,ExtJs尚不能應付這種開箱即用的問題,就像當前每個網格綁定到商店一樣,但是每當您通過其用戶關聯訪問它時,您的訂單商店就會隨時創建。

好消息是,你有各種方式來實現這一點。我能想到的最好的一點是,每次用戶點擊用戶行時,都會得到您的訂單(user.orders())。然後你可以用這個新店的reconfigure你的網格。

+0

我只是將user.orders()傳遞給reconfigure()?但是該方法接受商店作爲參數?它是如何工作的? – 2013-02-11 16:47:50

+0

給它一個 - 它應該工作。是的,'user.orders()'返回一個商店。 – Izhaki 2013-02-11 16:53:27

+0

很酷。有用。但是當我創建網格時,我怎麼不能僅僅將它指定爲Grid的'store'屬性呢?此刻我必須創建一個空的網格(不存儲),然後調用'grid.reconfigure(user.orders())'。看起來很黑。 – 2013-02-11 17:27:56

相關問題