使用多个模型关联绑定

时间:2017-10-13 18:13:12

标签: extjs associations

我正在使用ExtJS 6.x和三个模型:

Ext.define('Admin.model.Patient', {
    extend: 'Ext.data.Model',

    requires: [
        'Ext.data.proxy.Rest',
        'Ext.data.schema.Association'
    ],

    fields: [
        { name: 'id', type: 'string' },
        { name: 'mrn', type: 'string' },
        { name: 'birth_date', type: 'date', format: 'Y-m-d' },
        { name: 'sex', type: 'string' },
        { name: 'first_name', type: 'string' },
        { name: 'last_name', type: 'string' },

    ],

    style: {
        'font-size': '22px',
        'color':'red'
    },

    proxy: {
        type: 'ajax',
        url: remote.url.patient, 

        reader: {
            type: 'json',
            rootProperty: ''
        }
    }

});

Ext.define('Admin.model.LabResultGroup', {
    extend: 'Ext.data.Model',

    idProperty: 'id',
    fields: [
        { name: 'test_code', type: 'string' },
        { name: 'test_name', type: 'string' },
        {
            name: 'patient_id',
            type: 'string',
            reference: {
                parent: 'Patient',
                inverse: 'lab_results',
                autoLoad: false
            }
        }
    ],

    proxy: {
        type: 'ajax',
        url: remote.url.labsgroup,
        reader: {
            type: 'json',
            rootProperty: ''
    }
});

Ext.define('Admin.model.LabResult', {
    extend: 'Ext.data.Model',

    idProperty: 'id',
    fields: [
        { name: 'test_code', type: 'string' },
        { name: 'test_name', type: 'string' },
        { name: 'test_code_system', type: 'string' },
        { name: 'result_value', type: 'string' },
        { name: 'result_value_num', type: 'string' },
        { name: 'collection_datetime', type: 'date', format: 'Y-m-d' },
        { name: 'result_datetime', type: 'date', format: 'Y-m-d' },
        {
            name: 'lab_id',
            type: 'string',
            reference: {
                parent: 'LabResultGroup',
                inverse: 'lab_group',
                autoLoad: false
            }
        }
    ],

    proxy: {
        type: 'ajax',
        url: remote.url.labs,
        reader: {
            type: 'json',
            rootProperty: ''
        }
    }
});

我可以很好地访问LabResultGroup和Patient之间的关联(使用绑定在两个组合框之间),但是当我尝试访问LabResult和LabResultGroup之间的关联时,它不会注册。

我会在适当的时候发布一个小提琴来展示我遇到的行为。有没有什么可以阻止像这样的模型之间的关联?

1 个答案:

答案 0 :(得分:0)

它确实有效!由于一些奇怪的原因,我的LabResult模型上的关联中的父名称被搞砸了。更正了,我的关联绑定按预期触发。

(另外,我正在访问的API端点存在一个小问题。我必须为它过滤的属性添加另一个条件。详细信息,shmetails)

故事的道德:名字很重要!快乐星期五偷看!哈!哈!