Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExtJS:对模型包感到困惑_Extjs_Extjs4 - Fatal编程技术网

ExtJS:对模型包感到困惑

ExtJS:对模型包感到困惑,extjs,extjs4,Extjs,Extjs4,我对如何正确使用ExtJS4中的模型/存储/代理/阅读器感到困惑。我已经阅读了指南和示例,但仍然看不到问题的解决方案 目标:假设我正在使用car对象(存在模型),该对象包含(除其他外): 车辆标识符(VIN、品牌、型号、年份、颜色等) 所有权历史 维护历史 汽车部件的详细清单(发动机:{L-双缸,每缸2个气门,气冷},前制动器:{},…) 假设我使用VIN作为主键,并且我有一个RESTfull API设置,如 GET /car // gets list of

我对如何正确使用ExtJS4中的模型/存储/代理/阅读器感到困惑。我已经阅读了指南和示例,但仍然看不到问题的解决方案

目标:假设我正在使用
car
对象(存在模型),该对象包含(除其他外):

  • 车辆标识符(VIN、品牌、型号、年份、颜色等)
  • 所有权历史
  • 维护历史
  • 汽车部件的详细清单(发动机:{L-双缸,每缸2个气门,气冷},前制动器:{},…)
假设我使用VIN作为主键,并且我有一个RESTfull API设置,如

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)将具有读卡器root
Car
,另一个存储(我们称之为CarComponentStore)
Car.CarComponent
。这种方法的缺点是每次必须发出两个请求,一个用于Car,另一个用于CarComponent,即使返回的数据相同。但是,通过使用“主”和“从”存储的概念可以避免这种情况,请参见下文

在汽车网格中,您必须在CarComponent to CarComponentStore中将存储设置为CarStore。通过正确定义读卡器根,两个网格将“自动”填充来自响应的适当数据

我不想从服务器加载所有的汽车


嗯,除非你不知道VIN,否则你不必这么做。大多数API都支持分页,因此您可以获取10乘10的汽车,或者您可以在服务器端包含以过滤记录。但是第一个先决条件是要知道你要取回哪辆车:-)

好主意,谢谢你的回复。我同意你所说的,有两个独立的商店-但是我没有做两个请求,而是做了一个请求让汽车装载汽车商店,然后手动填充componentstore@Colin我已经添加了如何仅使用一个请求来填充两个存储,您已经成功应用了这一概念:)