嵌套 JSON 结构的 Extjs 模型
Extjs Model for nested JSON structure
考虑以下JSON结构
{
"id": 123,
"name": "Ed",
"orders": [
{
"id": 50,
"total": 100,
"order_items": [
{
"id": 20,
"price": 40,
"quantity": 2,
"product": {
"id": 1000,
"name": "MacBook Pro"
}
},
{
"id": 21,
"price": 20,
"quantity": 3,
"product": {
"id": 1001,
"name": "iPhone"
}
}
]
}
]
}
这是我的模型
Ext.define("User", {
extend: 'Ext.data.Model',
fields: [
'id', 'name'
],
hasMany: {model: 'Order', name: 'orders', associationKey: 'orders'}
});
Ext.define("Order", {
extend: 'Ext.data.Model',
fields: [
'id', 'total'
],
hasMany : {model: 'OrderItem', name: 'orderItems', associationKey: 'order_items'}
});
Ext.define("OrderItem", {
extend: 'Ext.data.Model',
fields: [
'id', 'price', 'quantity'
],
hasOne : {
model: 'Product',
name: 'product',
associationKey: 'product'
}
});
Ext.define("Product", {
extend: 'Ext.data.Model',
fields: [
'id', 'name'
]
});
当我在我的商店中加载数据然后检查商店记录时,我看到了这个
我没有得到订单和里面的东西。我定义模型的方式肯定有问题,但我似乎无法弄清楚。提前致谢。
更新
这是我的商店以及我如何加载数据
Ext.define('Company.store.TestOrders', {
extend: 'Ext.data.Store',
alias: 'store.testorders',
model: 'User',
data:[
{
"id": 123,
"name": "Ed",
"orders": [
{
"id": 50,
"total": 100,
"order_items": [
{
"id": 20,
"price": 40,
"quantity": 2,
"product": {
"id": 1000,
"name": "MacBook Pro"
}
},
{
"id": 21,
"price": 20,
"quantity": 3,
"product": {
"id": 1001,
"name": "iPhone"
}
}
]
}
]
}],
storeId: 'TestOrders',
proxy: {
type: 'memory'
}
});
然后我用
查看数据
Ext.getStores('TestOrders').getAt(0);
也许您正在寻找从用户商店获取订单和订购商品的方法?
您可以使用方法record.orders()
从用户记录中获取订单集合。
订单收集记录中的订单项目也是如此:order_record.order_items()
.
考虑以下JSON结构
{
"id": 123,
"name": "Ed",
"orders": [
{
"id": 50,
"total": 100,
"order_items": [
{
"id": 20,
"price": 40,
"quantity": 2,
"product": {
"id": 1000,
"name": "MacBook Pro"
}
},
{
"id": 21,
"price": 20,
"quantity": 3,
"product": {
"id": 1001,
"name": "iPhone"
}
}
]
}
]
}
这是我的模型
Ext.define("User", {
extend: 'Ext.data.Model',
fields: [
'id', 'name'
],
hasMany: {model: 'Order', name: 'orders', associationKey: 'orders'}
});
Ext.define("Order", {
extend: 'Ext.data.Model',
fields: [
'id', 'total'
],
hasMany : {model: 'OrderItem', name: 'orderItems', associationKey: 'order_items'}
});
Ext.define("OrderItem", {
extend: 'Ext.data.Model',
fields: [
'id', 'price', 'quantity'
],
hasOne : {
model: 'Product',
name: 'product',
associationKey: 'product'
}
});
Ext.define("Product", {
extend: 'Ext.data.Model',
fields: [
'id', 'name'
]
});
当我在我的商店中加载数据然后检查商店记录时,我看到了这个
我没有得到订单和里面的东西。我定义模型的方式肯定有问题,但我似乎无法弄清楚。提前致谢。
更新 这是我的商店以及我如何加载数据
Ext.define('Company.store.TestOrders', {
extend: 'Ext.data.Store',
alias: 'store.testorders',
model: 'User',
data:[
{
"id": 123,
"name": "Ed",
"orders": [
{
"id": 50,
"total": 100,
"order_items": [
{
"id": 20,
"price": 40,
"quantity": 2,
"product": {
"id": 1000,
"name": "MacBook Pro"
}
},
{
"id": 21,
"price": 20,
"quantity": 3,
"product": {
"id": 1001,
"name": "iPhone"
}
}
]
}
]
}],
storeId: 'TestOrders',
proxy: {
type: 'memory'
}
});
然后我用
查看数据Ext.getStores('TestOrders').getAt(0);
也许您正在寻找从用户商店获取订单和订购商品的方法?
您可以使用方法record.orders()
从用户记录中获取订单集合。
订单收集记录中的订单项目也是如此:order_record.order_items()
.