1

这是一个简单的用例,用于存储具有继承性的一对多(甚至一对一)。Ext JS 如何用它的 JSON 阅读器处理这个问题?

以下代码提供了一些伪模型和数据来说明用例:

伪代码示例:

Models:

Car {
  model,
  year,
  color
}

Truck extends Car {
  bedLength,
  duality
}

Van extends Car {
  leftSlideDoor,
  rightSlideDoor,
  tailGate
}

CarOwner {
  name,
  cars <Car>
}

Data:

carOwners:

[
{
  name: "Sencha",
  cars: [
   {
    color: "Brown",
    model: "Mater"
    type: "truck",
    duality: "false",
    bedLength: "10"
    },
    {
    color: "red",
    model: "sienna",
    type: "van",
    tailGate: "true",
    leftSlideDoor: "true",
    rightSlideDoor: "true"
    }
  ]
}
]

加载数据时,会实例化并加载“正确”类型的 Cars。如何在 Ext JS 中做到这一点?

4

1 回答 1

0

从 OO 的角度来看,您所描述的内容是行不通的。您的车主拥有一系列“汽车”,但您尝试在数据中使用的类型不是汽车,而是汽车的扩展。在 c# 中,您carOwner可能包含List<ICar>并且虽然这将使您能够存储卡车和货车,但您只能使用 ICar 接口的属性(因为这些是唯一的共享属性)。

我建议在该示例中,如果属性是可变的,您可以像这样设置自己的汽车:

CarOwner {
  name,
  cars <Car>
  vans <Van>
  trucks <Trucks>
}

或者您可以将您的数据描述为“车辆”,并使该对象足够通用以包含所有可能的属性。

作为旁注,如果您纯粹是在 Ext 中的“关联”示例之后,并且汽车/货车/卡车的事情是假设的,请回复此内容,我会放弃一个。

于 2013-01-11T08:03:05.287 回答