是否可以使用相同的模型具有多个hasMany关系?

时间:2014-09-09 18:13:26

标签: 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'
        }
    }
});

但这会导致每个列表绑定到属于SpecificChemical模型的每个ChemicalRisks,而不仅仅是属于hasMany的{​​{1}}。好像我需要加入多个字段

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

1 个答案:

答案 0 :(得分:2)

确定你可以!

使用associationKey和关联的自动生成商店

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"
            }

        ]
    }
}

然后将主模型绑定到商店,比如ItemsStore。 重要事项ItemsStore的每条记录都将由Sencha自动生成:fiberglassResinsStore和paintsStainsStore。

哟可以通过console.log()查看实际商店的每条记录。