Extjs 4-associations hasMany不在loadData上加载嵌套列表

Extjs 4 - associations hasMany does not load nested list on loadData

本文关键字:加载 嵌套 列表 loadData 4-associations hasMany 不在 Extjs      更新时间:2023-09-26

这是我的两个相关模型:

Ext.define('NG.model.business.Order', {
extend: 'NG.model.business.AbstractBusiness',
idProperty: 'iD',
requires: [
    'NG.model.business.OrderLine'
],
fields: [
    { name: 'iD', type: 'string' },
    { name: 'hasAttachments', type:'boolean' },
    { name: 'transactionDate', type: 'date', dateFormat: 'c' },
    { name: 'orderNumber', type: 'string' },
    { name: 'vendorSiteID', type: 'int' },
    { name: 'customerSiteID', type: 'int' },
    { name: 'totalAmount', type: 'float' },
    { name: 'isActive', type: 'boolean' }
],
associations: [{
    type: 'hasMany',
    model: 'NG.model.business.OrderLine',
    foreignKey: 'orderArchiveID',
    associationKey: 'orderLines',
    name: 'lines'
}]
});

Ext.define('NG.model.business.OrderLine', {
extend: 'Ext.data.Model',
idProperty: 'iD',
fields: [
    { name: 'iD', type: 'string' },
    { name: 'orderArchiveID', type: 'string' },
    { name: 'orderNumber', type: 'string' },
    { name: 'orderDate', type: 'date', dateFormat: 'c' },
    { name: 'lineNumber', type: 'string' },
    { name: 'catalogNumber', type: 'string' },
    { name: 'customerCatalogNumber', type: 'string' },
    { name: 'itemDescription', type: 'string' },
    { name: 'unitMeasure', type: 'string' },
    { name: 'unitPrice', type: 'string' },
    { name: 'quantity', type: 'string' },
    { name: 'quantityAsNumber', type: 'float' }   
]
});

以下是从我的服务器返回的对象的数据:

{
"iD": "dbc55bc0-2a05-4544-81f7-7378e2c464b0",
"orderEndCustomerName": "מפעל מלמ",
"orderPurchasingGroup": "",
"vendorDuns": "510674039",
"orderLines": [{
    "iD": "0d6fc3f5-5188-4ecc-bd9c-ebefda14950f",
    "orderArchiveID": "dbc55bc0-2a05-4544-81f7-7378e2c464b0",
    "orderNumber": "H31123-012",
    "orderDate": "2013-11-03T00:00:00",
    "lineNumber": "4",
    "catalogNumber": "102079",
    "customerCatalogNumber": "102079",
    "itemDescription": "A4 נייר צילום 75 גר' לבן, לובן 110 - גודל",
    "unitMeasure": "PK",
    "unitPrice": 3.28,
    "quantity": "4",
    "totalAmount": 13.12,
    "currency": "USD",
    "deliveryAddress": "",
    "comments": "",
    "isActive": true,
    "status": "",
    "customerSiteID": 8078,
    "vendorSiteID": 9736,
    "deliverySiteID": "",
    "agreementNumber": "",
    "agreementLineNumber": "",
    "orderLineApprovalState": "Undecided",
    "linkage": "False",
    "vendorComments": "",
    "lineStateID": 1,
    "orderLineDeliveryNotes": [{
        "iD": "641b5383-ea84-4bd1-9a22-7564fb5044b7",
        "orderLineArchiveID": "0d6fc3f5-5188-4ecc-bd9c-ebefda14950f",
        "orderNumber": "H31123-012",
        "quantity": "4",
        "deliveryDate": "2013-11-06T00:00:00"
    }]
}, {
    "iD": "ae10df47-25d7-4bc4-9551-1e36398681c6",
    "orderArchiveID": "dbc55bc0-2a05-4544-81f7-7378e2c464b0",
    "orderNumber": "H31123-012",
    "orderDate": "2013-11-03T00:00:00",
    "lineNumber": "3",
    "catalogNumber": "1370027",
    "customerCatalogNumber": "1370027",
    "itemDescription": "סכין יפני בינוני איכותי גוף מתכת אן טי פרו הץ 2",
    "unitMeasure": "EA",
    "unitPrice": 13.23,
    "quantity": "5",
    "totalAmount": 66.15,
    "currency": "USD",
    "deliveryAddress": "",
    "comments": "",
    "isActive": true,
    "status": "",
    "customerSiteID": 8078,
    "vendorSiteID": 9736,
    "deliverySiteID": "",
    "agreementNumber": "",
    "agreementLineNumber": "",
    "orderLineApprovalState": "Undecided",
    "linkage": "False",
    "vendorComments": "",
    "lineStateID": 1,
    "orderLineDeliveryNotes": [{
        "iD": "400ed534-026e-4ddc-984d-c28fd9b7600d",
        "orderLineArchiveID": "ae10df47-25d7-4bc4-9551-1e36398681c6",
        "orderNumber": "H31123-012",
        "quantity": "5",
        "deliveryDate": "2013-11-06T00:00:00"
    }]
}, {
    "iD": "b03734a8-4770-4d85-9762-abde47202cb7",
    "orderArchiveID": "dbc55bc0-2a05-4544-81f7-7378e2c464b0",
    "orderNumber": "H31123-012",
    "orderDate": "2013-11-03T00:00:00",
    "lineNumber": "2",
    "catalogNumber": "304029",
    "customerCatalogNumber": "304029",
    "itemDescription": "עט סמון פרמננטי עם חוד לבד 90/70 שחור - דגם ארטי- 12 יח' בחבילה",
    "unitMeasure": "PK",
    "unitPrice": 1.69,
    "quantity": "1",
    "totalAmount": 1.69,
    "currency": "USD",
    "deliveryAddress": "",
    "comments": "",
    "isActive": true,
    "status": "",
    "customerSiteID": 8078,
    "vendorSiteID": 9736,
    "deliverySiteID": "",
    "agreementNumber": "",
    "agreementLineNumber": "",
    "orderLineApprovalState": "Undecided",
    "linkage": "False",
    "vendorComments": "",
    "lineStateID": 1,
    "orderLineDeliveryNotes": [{
        "iD": "c7618e93-da05-48e9-9d02-35b35d483c3d",
        "orderLineArchiveID": "b03734a8-4770-4d85-9762-abde47202cb7",
        "orderNumber": "H31123-012",
        "quantity": "1",
        "deliveryDate": "2013-11-06T00:00:00"
    }]
}, {
    "iD": "f7375a44-1af1-48d6-b97a-d4904e8cb2f7",
    "orderArchiveID": "dbc55bc0-2a05-4544-81f7-7378e2c464b0",
    "orderNumber": "H31123-012",
    "orderDate": "2013-11-03T00:00:00",
    "lineNumber": "1",
    "catalogNumber": "603014",
    "customerCatalogNumber": "603014",
    "itemDescription": "סיכות למכונת הידוק 26/6 באריזות של 5000 -דגם ארטי",
    "unitMeasure": "PK",
    "unitPrice": 0.45,
    "quantity": "20",
    "totalAmount": 9.0,
    "currency": "USD",
    "deliveryAddress": "",
    "comments": "",
    "isActive": true,
    "status": "",
    "customerSiteID": 8078,
    "vendorSiteID": 9736,
    "deliverySiteID": "",
    "agreementNumber": "",
    "agreementLineNumber": "",
    "orderLineApprovalState": "Undecided",
    "linkage": "False",
    "vendorComments": "",
    "lineStateID": 1,
    "orderLineDeliveryNotes": [{
        "iD": "baa7a010-af6b-4848-836c-cb00217c5d93",
        "orderLineArchiveID": "f7375a44-1af1-48d6-b97a-d4904e8cb2f7",
        "orderNumber": "H31123-012",
        "quantity": "20",
        "deliveryDate": "2013-11-06T00:00:00"
    }]
}],
"orderStatusName": "Changed",

"year": 2013
}

以下是我如何加载数据:

orderData = {
    success: true,
    data: [Ext.decode(response.responseText)] // THE RESPONSE IS HOW I WROTE IT ABOVE.
},
order = Ext.create('NG.model.business.Order', orderData),

现在我知道这行有很多关联,但商店总是空的。

关联未加载!!!

foreignKey选项由代理的读取器处理,您在此处绕过它。

考虑到你已经为你的模型配置了一个代理,你可以直接使用它的阅读器来处理你的数据:

var data = Ext.decode(response.responseText),
    reader = NG.model.business.Order.getProxy().getReader(),
    resultSet = reader.readRecords(data),
    // The reader returns a ResultSet, so you must grab your record
    // from it. You should probably ensure that the read operation was
    // successful and returned one record.
    order = resultSet.records[0];
console.log(order.getAssociatedData());
// > Object {lines: Array[4]}