javascript - 嵌套 JSON 结构的 Extjs 模型

标签 javascript json extjs sencha-touch

考虑以下 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'
    ]
});

当我在商店中加载数据然后检查商店记录时,我看到了这一点

enter image description here

我没有收到订单和里面的东西。我定义模型的方式肯定有问题,但我似乎无法弄清楚。提前致谢。

更新 这是我的商店以及我如何加载数据

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()

检查这个example on fiddle

关于javascript - 嵌套 JSON 结构的 Extjs 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55273302/

相关文章:

php - 从通过 JSON 从 PHP/Cakephp 传递到 Javascript/Jquery 的嵌套数组中获取数据

java - 探针格式化json文件并将其解析为java

json - 将具有 12 个嵌套级别的 json 文件读取到 AZURE hdinsights 中的 hive 中

javascript - 限制ExtJS Textarea中输入的行数

sencha-touch - ExtJS 4/Sencha 触控容器、组件、元素和面板

javascript - Three.js 向场景添加多个立方体的更好方法

javascript - 如何让每个元素点击触发对另一个元素的另一次点击

javascript - 自动检查复选框

javascript - 部署到 Heroku 期间出现扩展运算符语法错误

json - 使用 extjs 存储复杂的嵌套 json 循环