使用Ext JS 4.1 ....
我有一个显示一组模型实例的网格,尽管只显示了一些字段。然后我有一个双击监听器,我想将整个记录加载到一个表单进行编辑。在双击监听器中,我没有看到我的hasMany关联中的数据,尽管根据Firebug的Net显示返回了json数据,我看到了服务器调用的响应。我的模型有问题还是我错了?
Request.js
Ext.define('Request', {
extend: 'Ext.data.Model',
requires: ['PointOfContact'],
fields: [
{name: 'id', type: 'int'},
{name: 'project', type: 'string'},
{name: 'purpose', type: 'string'},
{name: 'status'},
{name: 'additionalInfo', type: 'string'}
],
hasMany: [{
model: 'PointOfContact',
name: 'pointOfContacts',
foreignKey: 'id',
associationKey: 'pointOfContacts'
}],
proxy: {
type: 'rest',
url: '/web/project/rest/request/',
reader: { type: 'json' },
writer: { type: 'json' }
}
});
PointOfContact.js
Ext.define('PointOfContact', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
{name: 'fullName', type: 'string'},
{name: 'email', type: 'string'},
{name: 'phone', type: 'string'}
]
});
Requests.js
Ext.define('Requests', {
extend: 'Ext.data.Store',
model: 'Request',
autoLoad: true
});
RequestsView.js
Ext.define('RequestsView', {
extend: 'Ext.grid.Panel',
title: 'All Requests',
store: 'Requests',
viewConfig: {
singleSelect: 'true',
listeners: {
itemdblclick: function(dataview, record, item, index, e) {
console.log(record.get('project'));
console.log(record.get('purpose'));
console.log(record.get('status'));
console.log(record.get('additionalInfo'));
console.log(record.get('pointOfContacts'));
var comp = Ext.ComponentQuery.query('requestForm');
comp[0].getForm().loadRecord(record);
var mainPanel = Ext.ComponentQuery.query('mainpanel');
mainPanel[0].getLayout().setActiveItem('requestForm');
}
}
},
columns: [
{header: 'Project', dataIndex: 'project', flex: 1},
{header: 'Purpose', dataIndex: 'purpose', flex: 1},
{header: 'Status', dataIndex: 'status', flex: 1}
]
});
所以在控制台中我看到了项目,目的,状态和additionalInfo的值,但我得到了pointOfContacts的“undefined”。
有什么建议吗?
使用最终工作代码更新 这是我用来检索pointofContacts并使用pointOfContacts在表单面板上加载网格的工作代码
...
itemdblclick: function(dataview, record, item, e) {
var comp = Ext.ComponentQuery.query('requestForm');
comp[0].getForm().loadRecord(record);
Ext.getCmp('pocGrid').reconfigure(record.pointOfContacts());
var mainPanel = Ext.ComponentQuery.query('mainpanel');
mainPanel[0].getLayout().setActiveItem('requestForm');
}
....
答案 0 :(得分:0)
默认情况下,没有多个关联被解析为关联记录。特别是对于网格 - 因为它应该是一个平面数据视图。 Model文档向您展示如何设置关联,但没有说明为您创建实例:) 模型文档中有许多(http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.association.HasMany)的使用链接。不幸的是,这种用法并不像你期望的那样。本质上,它旨在通过调用要加载的商店来按需获取记录。