当我在 ExtJs 4.2 MVC 中使用关联时,我遇到了一个问题,我想出了一个解决方案。
问题 Stmt:我有一个填充了 Model/Store 的网格页面:问题。单击网格上的记录时,应该能够看到另一个模型的评论。每个问题可以有很多评论。
示例 JSON:
{
"data": [
{
"id": 555,
"status": "OPEN",
"createDate": "04/29/2013",
"comments": [
{
"id": 1,
"commentDate": "19/02/2013",
"description": "Test"
},
{
"id": 2,
"commentDate": "29/01/2013",
"description": "Test 2"
}
]
}
],
"total": 1,
"success": true
}
控制器
Ext.define('app.IssuesC',
{
extend : 'Ext.app.Controller',
stores : [ 'IssuesS','CommentsS'],
models : [ 'IssueM', 'CommentsM'],
views : [ 'issue.IssueDetailV',
'issue.IssueGridV',
'issue.IssueCommentsV'],
refs : [ {
ref : 'comments',
selector : 'issuecomments'//xtype for issue.IssueCommentsV
}, {
ref : 'issuedetail',
selector : 'issuedetailv'//xtype for issue.IssueDetailV
}, {
ref : 'issuegrid',
selector : 'issuegrid'//xtype for issue.IssueGridV
} ],
onLaunch : function(app) {
this.control({
'issuegrid' : {
itemdblclick : this.onGridItemDblClick,
select : this.onSelectIssueShowComments
}
});
},
onGridItemDblClick : function(view, record, item, index, e) {
var IssueDetailV = Ext.widget('issuedetailv');
IssueDetailV.down('form').getForm().loadRecord(record);
},
onSelectIssueShowComments : function(selection,record, index, eOpts) {
this.getComments().setRecord(record.raw);
}
});
模型和关联设置
Issue --> associations --> Comment
IssueM:
hasMany : {model:'CommetM',
name : 'commentsassociation'}
CommentM:
belongsTo : {model : 'IssueM'}
任何地方都没有问题。景色非常好。只需单击一下控制器部分,我就可以在面板中查看评论列表(位于主网格下方)。我在面板中使用了 XTemplate 的 TPL 属性,它运行良好。这个属性是什么“原始”?当我在萤火虫中评估“记录”时,它会显示“原始”“数据”和许多对象。数据部分映射名称参数并填充值。原始部分具有相同的 JSON 结构,我已使用它来检索面板的值。这是正确的方法吗?