extjs - 是否可以使用同一模型拥有多个 hasMany 关系?

标签 extjs sencha-touch sencha-touch-2

我有一个模型,用于存储多个化学品列表。每个 hasMany 的化学模型都是相同的关系。

我需要这样的东西:

Ext.define('HandSurvey.model.ChemicalRisks', {
    extend: 'Ext.data.Model',
    requires: ['Ext.data.identifier.Uuid'],
    config: {
        idProperty: 'id',
        identifier: 'uuid',
        fields: [
            { name: 'id', type: 'auto' }
        ],
        associations: [
            {
                type: 'hasMany',
                model : 'HandSurvey.model.SpecificChemical',
                name  : 'fiberglassResins',
                store : {
                    type: 'sql'
                }
            },
            {
                type: 'hasMany',
                model : 'HandSurvey.model.SpecificChemical',
                name  : 'paintsStains',
                store : {
                    type: 'sql'
                }
            },
        ],
        proxy: {
            type: 'sql'
        }
    }
});

但这会导致每个列表绑定(bind)到每个 SpecificChemical属于ChemicalRisks模型,而不仅仅是那些属于该 hasMany 的模型。似乎我需要加入多个字段

可以这样做吗?或者我是否必须制作一堆具有不同名称的完全相同的模型/商店?

最佳答案

当然可以!

使用关联 key 和关联的自动生成存储

associations: [
            {
                type: 'hasMany',
                model : 'HandSurvey.model.SpecificChemical',
                name  : 'fiberglassResins',
                associationKey : 'fiberglassResins'
            },
            {
                type: 'hasMany',
                model : 'HandSurvey.model.SpecificChemical',
                name  : 'paintsStains',
                associationKey : 'paintsStains'
            },
        ]

给出这样的响应:{

    "response" : {
        "fiberglassResins": [
            {
                "id"   : 1
                "name" : "Polyester"

            },
            {
                "id"   : 2
                "name" : "E-Glass"
            }

        ],
        "paintsStains": [
            {
                "id"   : 1
                "name" : "item1"

            },
            {
                "id"   : 2
                "name" : "item2"
            }

        ]
    }
}

然后,将主模型绑定(bind)到商店(例如 ItemsStore)。 重要的是 ItemsStore 的每条记录都将由 Sencha 自动生成:fibreglassResinsStore 和 PaintsStainsStore。

您可以通过 console.log() 每条记录来查看实际的存储情况。

关于extjs - 是否可以使用同一模型拥有多个 hasMany 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25751205/

相关文章:

javascript - 我对 javascript 中的函数参数有点困惑

javascript - Sench Touch 2 动态获取容器数据/存储

javascript - Sencha Touch 2 应用程序与 Cordova 3.1 在 iOS 7 上运行缓慢

javascript - 同侧的两个菜单

javascript - 外部JS : How to enforce the MaxLength to false at run time?

php - ExtJS 和自动加载 URL

sqlite - Sencha Touch 2 - Ext.device.SQLite.Database 工作?

extjs - 使用 Jasmine 进行测试时如何配置 Sencha Touch 应用程序文件的加载顺序

android - 使用 sencha touch 2 开发的应用程序的推送通知

javascript - 从 extjs 3.4 中的 ComboBox 中删除参数