ExtJS:对模型包感到困惑
我对如何正确使用ExtJS4中的模型/存储/代理/阅读器感到困惑。我已经阅读了指南和示例,但仍然看不到问题的解决方案 目标:假设我正在使用ExtJS:对模型包感到困惑,extjs,extjs4,Extjs,Extjs4,我对如何正确使用ExtJS4中的模型/存储/代理/阅读器感到困惑。我已经阅读了指南和示例,但仍然看不到问题的解决方案 目标:假设我正在使用car对象(存在模型),该对象包含(除其他外): 车辆标识符(VIN、品牌、型号、年份、颜色等) 所有权历史 维护历史 汽车部件的详细清单(发动机:{L-双缸,每缸2个气门,气冷},前制动器:{},…) 假设我使用VIN作为主键,并且我有一个RESTfull API设置,如 GET /car // gets list of
car
对象(存在模型),该对象包含(除其他外):
- 车辆标识符(VIN、品牌、型号、年份、颜色等)
- 所有权历史
- 维护历史
- 汽车部件的详细清单(发动机:{L-双缸,每缸2个气门,气冷},前制动器:{},…)
GET /car // gets list of cars
GET /car/123abc // gets car with VIN# 123abc
现在,如果我在控制器中有一个对VIN的引用,我想做的是启动一个复杂的仪表板,它可能包含以下组件:
- 汽车部件的网格
- 维护成本与时间的图表
- 用于显示品牌、型号、年份的自定义面板
- ect
Car
模型和一个CarComponent
模型,其中我的服务器配置为发送嵌套数据(即没有用于直接处理CarComponent
的API)。理想的。。。我只想通过一个简单的GET/car/
从服务器请求汽车数据,并使用返回的数据填充复杂仪表板的所有组件。因此,我的尝试策略是:
- 型号:
,Car
CarComponent
- 商店:
汽车
- 代理:附加到
模型的单个rest代理汽车
- 以某种方式使用
汽车的嵌套属性来填充组件(例如组件网格)
或者我需要为组件单独存储吗?而且,我也说不出商店是如何运作的;我不想从服务器加载所有车辆。。只是指定的一个。我只是对如何将模型/代理/存储串在一起以完成我需要的东西感到困惑…在这样的情况下,如果您有一个单独的汽车网格和一个单独的组件网格,理想的设置将是有一个API来处理CarComponent。既然您已经提到情况并非如此,我建议定义两个单独的商店。它们将发出相同的GET请求来加载数据,但您将指定不同的GET请求。如果服务器返回的数据类似于:
{
Car:
{
color:blue,
CarComponent:
{
engine: {..}
}
..
}
}
然后一个存储(我们称之为CarStore)将具有读卡器rootCar
,另一个存储(我们称之为CarComponentStore)Car.CarComponent
。这种方法的缺点是每次必须发出两个请求,一个用于Car,另一个用于CarComponent,即使返回的数据相同。但是,通过使用“主”和“从”存储的概念可以避免这种情况,请参见下文
在汽车网格中,您必须在CarComponent to CarComponentStore中将存储设置为CarStore。通过正确定义读卡器根,两个网格将“自动”填充来自响应的适当数据
我不想从服务器加载所有的汽车
嗯,除非你不知道VIN,否则你不必这么做。大多数API都支持分页,因此您可以获取10乘10的汽车,或者您可以在服务器端包含以过滤记录。但是第一个先决条件是要知道你要取回哪辆车:-)好主意,谢谢你的回复。我同意你所说的,有两个独立的商店-但是我没有做两个请求,而是做了一个请求让汽车装载汽车商店,然后手动填充componentstore@Colin我已经添加了如何仅使用一个请求来填充两个存储,您已经成功应用了这一概念:)