当我在ExtJs 4.2 MVC中玩协会时,我遇到了一个问题,我想出了一个解决方案。
问题Stmt:我有一个使用模型/商店填充的网格页面:问题。单击网格上的记录,应该能够看到注释,这是另一个模型。每个问题都可以有很多评论。
示例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属性,它工作正常。什么是这个属性" raw"?当我评估"记录"在萤火虫中它显示我" raw" "数据"和许多对象。数据部分映射name参数并填充值。原始部分具有相同的JSON结构,我用它来检索面板的值。这是正确的方法吗?
答案 0 :(得分:2)
Raw只是从服务器发送的原始JSON数据。然后,配置的阅读器会解析该原始有效负载并创建记录对象。 读者在商店代理中定义:docs.sencha.com/extjs/4.1.3/#!/api/Ext.data.reader.Reader
答案 1 :(得分:0)
“原始”给出的是从“后端”接收到的,但是“记录”给出的数据是通过模型“转换”的(假设您在“模型”中应用了一些“公式”或“格式”)。对不起,我晚答复!