2013-02-11 38 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

相关问题